“`html

2025 最新 Swift 導航列(UINavigationController) 教學 – 完整指南與最佳實踐

Swift 導航列 (UINavigationController) 是 iOS App 中不可或缺的元件,能夠提升用戶體驗並提供更流暢的導航功能。在這篇文章中,我們將深入探討如何使用 UINavigationController,並分享一些最佳實踐,讓你的 App 更加易用且功能強大。

什麼是 Swift 導航列(UINavigationController)?

UINavigationController 是一種容器視圖控制器,專門用於管理一系列的視圖控制器。透過導航列,你可以輕鬆地在不同的視圖之間進行切換,並且保持良好的用戶界面結構。使用導航列的好處包括:

  • 簡化視圖管理:自動處理視圖控制器的堆疊。
  • 內建的返回功能:用戶可以輕鬆地返回到上個視圖。
  • 自訂導航標題和按鈕,提高用戶互動性。

如何使用 UINavigationController

步驟 1: 創建 UINavigationController

首先,你需要在你的 App 中創建一個 UINavigationController 實例。這可以通過程式碼或 Storyboard 來實現。以下是程式碼範例:

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let secondViewController = SecondViewController()
        let navigationController = UINavigationController(rootViewController: secondViewController)
        navigationController.modalPresentationStyle = .fullScreen
        present(navigationController, animated: true, completion: nil)
    }
}

步驟 2: 推入新視圖控制器

要在導航列中推入新的視圖控制器,可以使用 pushViewController(_:animated:) 方法,例如:

let newViewController = NewViewController()
navigationController?.pushViewController(newViewController, animated: true)

步驟 3: 返回上個視圖控制器

用戶可以通過導航列的返回按鈕返回上個視圖。你也可以手動調用 popViewController(animated:) 方法來實現:

navigationController?.popViewController(animated: true)

錯誤排除

在使用 UINavigationController 時,常見的錯誤包括:

  • 無法返回上個視圖: 確保你正在正確地推入和彈出視圖控制器。
  • 導航列不顯示: 確認你的視圖控制器是嵌入在 UINavigationController 中。

延伸應用

你可以將 UINavigationController 與其他視圖控制器結合使用,例如 UITableViewController,以創建更複雜的應用程式架構。以下是一個結合 UINavigationControllerUITableViewController 的範例:

import UIKit

class MainTableViewController: UITableViewController {
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = "Item \(indexPath.row)"
        return cell
    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let detailViewController = DetailViewController()
        navigationController?.pushViewController(detailViewController, animated: true)
    }
}

推薦閱讀文章

若想進一步學習 UINavigationController,你可以參考以下資源:


UINavigationController 教學 – 入門
UINavigationController 程式指南
UINavigationController 綜合指南
如何使用 UINavigationController 與 UITableViewController
如何使用 Storyboards 將 View Controllers 推入 UINavigationController

推薦學習 Youtube 影片

09 導航控制器的基本使用

Swift 導航列(UINavigationController) 🗺學習教學 – 掌握如何使用

常見問題解答 (Q&A)

Q1: 如何在 UINavigationController 中設置自定義的導航按鈕?

A1: 你可以通過 navigationItem.rightBarButtonItemnavigationItem.leftBarButtonItem 屬性來設置自定義的導航按鈕。

Q2: UINavigationController 是否支援多層嵌套的導航?

A2: 是的,UINavigationController 支援多層嵌套的導航,你可以在每個視圖控制器中推入新的視圖控制器。

Q3: 如何在 UINavigationController 中使用過渡動畫?

A3: 你可以通過自定義的動畫控制器來實現過渡動畫,並在推入或彈出視圖控制器時使用 UIViewControllerAnimatedTransitioning 協議。

“`

Categorized in:

Tagged in:

,