標籤:
------------------
1. 最簡單的方法
拖拽, 這個就不用多解釋了吧. 直接拖拽到另一個視圖控制器, 選擇 show, 就行了.
2. 利用 Segue 方法 (這裡主要是 方法1 的傳值)
連好線, 點擊 連線中間部分, 設定 Identifier.
然後 調用 performSegueWithIdentifier 方法.
(注: Demo 裡面, 是直接將 TableViewController 和 SecondViewController 進行連線, 而不是 點擊 Cell 的 indicator 進行連線)
執行以下 方法, 就可以進行 跳轉操作了.
複製代碼
- performSegueWithIdentifier("SecondSegue", sender: self)
|
如何傳值?
很簡單, 需要調用 prepareForSegue 方法 (因為這裡是 父視圖 -> 子視圖 傳值, 所以要用 destinationViewController)
複製代碼
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
- var theSegue = segue.destinationViewController as SecondViewController
- theSegue.text = "Pass"
- }
|
(注: 這裡, Swift 的 自動補全可能失效, 所以 如果沒有出現 destinationViewController, 沒關係往後打.)
這裡的 text 是我在 子視圖中 聲明的變數, 用來設定 Label 的 值.
PS:
一般, 我們都用使用連線的方式, 這裡告訴大家另一個方式, 就是用 viewWithTag. 我先前在 Label 控制項 Tag 中設定為 100.
當然你也可以使用連線, 使用 viewWithTag 可以在我們自訂 Cell 的時候 方便用到, 而不需要建立單獨的 Cell class.
3. 利用 self.storyboard
利用 self.storyboard 方法, 就不需要進行 連線, 一樣可以進行視圖之間的跳轉. 但是必須要設定 Storyboard ID.
然後利用 如下方法進行 跳轉 和 傳值
複製代碼
- var thirdVC = self.storyboard?.instantiateViewControllerWithIdentifier("ThirdViewController") as ThirdViewController
- thirdVC.text = "Pass"
- self.navigationController?.pushViewController(thirdVC, animated: true)
|
因為是在 同一個 Storyboard 裡面進行跳轉, 所以 self.storyboard 就可以滿足需求.
不明白? 看最後一個方法:
4. 利用 UIStoryboard
XIB 方法, 我們需要 用到 nibName, 同樣 如果我們想要 分離多個 sence 在不同的Storyboard 裡面, 怎麼辦?
這個時候, 就不能使用 self.storyboard 了.
而是:
複製代碼
- var storyboard = UIStoryboard(name: "New", bundle: nil)
- var newVC = storyboard.instantiateViewControllerWithIdentifier("NewViewController") as NewViewController
- newVC.text = "Pass"
- self.navigationController?.pushViewController(newVC, animated: true)
|
是不是 和 XIB 有異曲同工的感覺, 這樣就可以把 Storyboard 分幾個, 每個裡面放幾個 Sence.
這樣的好處就是, 當你需要做多個不同功能的模組的應用, 分離到不同的 Storyboard 中, 彼此互不影響.
相對於 XIB 來說, 每個檔案夾 只需要 1 個 Storyboard 檔案, 和 Swfit 檔案就可以了.
swift 下storyboard的頁面跳轉和傳值