分享一個(gè)關(guān)于Storyboard 跳轉(zhuǎn)與傳值
寫(xiě)在前面的知識(shí):
因?yàn)樘O(píng)果推 Storyboard 而且 目前來(lái)看, Apple Watch 也是用 Storyboard 就知道, 明天應(yīng)用估計(jì)都是 Storyboard 的天下了.
(水平有限, 不對(duì)之處在所難免, 望海涵)
很多人似乎還是在用 XIB, 對(duì) Storyboard 如何進(jìn)行跳轉(zhuǎn) 似乎 懵懵懂懂...
好吧, 鑒于 早上群里, 有人問(wèn) 怎么跳轉(zhuǎn), 怎么傳值 等等問(wèn)題. 就做下總結(jié), 同時(shí)為大家 提供一些方法和參考.
***
1. 最簡(jiǎn)單的方法
拖拽, 這個(gè)就不用多解釋了吧. 直接拖拽到另一個(gè)視圖控制器, 選擇 show, 就行了.
2. 利用 Segue 方法 (這里主要是 方法1 的傳值)
連好線, 點(diǎn)擊連線中間部分, 設(shè)置 Identifier.
然后 調(diào)用 performSegueWithIdentifier 方法.
(注: Demo 里面, 是直接將 TableViewController 和 SecondViewController 進(jìn)行連線, 而不是 點(diǎn)擊 Cell 的 indicator 進(jìn)行連線)
執(zhí)行以下 方法, 就可以進(jìn)行 跳轉(zhuǎn)操作了.
performSegueWithIdentifier("SecondSegue", sender: self)
如何傳值?
很簡(jiǎn)單, 需要調(diào)用 prepareForSegue 方法 (因?yàn)檫@里是 父視圖 -> 子視圖 傳值, 所以要用 destinationViewController)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var theSegue = segue.destinationViewController as SecondViewController theSegue.text = "Pass" }
(注: 這里, Swift 的 自動(dòng)補(bǔ)全可能失效, 所以 如果沒(méi)有出現(xiàn) destinationViewController, 沒(méi)關(guān)系往后打.)
這里的 text 是我在 子視圖中 聲明的變量, 用來(lái)設(shè)置 Label 的 值.
PS:
一般, 我們都用使用連線的方式, 這里告訴大家另一個(gè)方式, 就是用 viewWithTag. 我先前在 Label 控件 Tag 中設(shè)置為 100.
當(dāng)然你也可以使用連線, 使用 viewWithTag 可以在我們自定義 Cell 的時(shí)候 方便用到, 而不需要?jiǎng)?chuàng)建單獨(dú)的 Cell class.
3. 利用 self.storyboard
利用 self.storyboard 方法, 就不需要進(jìn)行 連線, 一樣可以進(jìn)行視圖之間的跳轉(zhuǎn). 但是必須要設(shè)置 Storyboard ID.
然后利用 如下方法進(jìn)行 跳轉(zhuǎn) 和 傳值
var thirdVC = self.storyboard?.instantiateViewControllerWithIdentifier("ThirdViewController") as ThirdViewController thirdVC.text = "Pass" self.navigationController?.pushViewController(thirdVC, animated: true)
因?yàn)槭窃?同一個(gè) Storyboard 里面進(jìn)行跳轉(zhuǎn), 所以 self.storyboard 就可以滿足需求.
不明白? 看最后一個(gè)方法:
4. 利用 UIStoryboard
XIB 方法, 我們需要 用到 nibName, 同樣 如果我們想要 分離多個(gè) sence 在不同的Storyboard 里面, 怎么辦?
這個(gè)時(shí)候, 就不能使用 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有異曲同工的感覺(jué), 這樣就可以把 Storyboard分幾個(gè), 每個(gè)里面放幾個(gè) Sence.
這樣的好處就是, 當(dāng)你需要做多個(gè)不同功能的模塊的應(yīng)用, 分離到不同的 Storyboard 中, 彼此互不影響.
相對(duì)于XIB來(lái)說(shuō), 每個(gè)文件夾只需要 1 個(gè)Storyboard文件, 和Swfit 文件就可以了.
以上敘述是小編給大家分享storyboard跳轉(zhuǎn)傳值的相關(guān)知識(shí),希望大家喜歡。
相關(guān)文章
iOS實(shí)現(xiàn)點(diǎn)擊狀態(tài)欄自動(dòng)回到頂部效果詳解
在IOS開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)有這種需求,需要通過(guò)點(diǎn)擊狀態(tài)欄返回到頂部,給用戶更好的體驗(yàn)效果,下面這篇文章給大家詳細(xì)介紹了實(shí)現(xiàn)過(guò)程,有需要的可以參考借鑒。2016-09-09iOS TableView頭視圖根據(jù)偏移量下拉縮放效果
這篇文章主要為大家詳細(xì)介紹了iOS TableView頭視圖根據(jù)偏移量下拉縮放效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05iOS藍(lán)牙開(kāi)發(fā)數(shù)據(jù)實(shí)時(shí)傳輸
這篇文章主要為大家詳細(xì)介紹了iOS藍(lán)牙開(kāi)發(fā)數(shù)據(jù)實(shí)時(shí)傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12iOS10 適配遠(yuǎn)程推送功能實(shí)現(xiàn)代碼
這篇文章主要介紹了iOS10 適配遠(yuǎn)程推送功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09iOS開(kāi)發(fā)之統(tǒng)計(jì)Xcode工程的代碼行數(shù)
這篇文章主要給大家介紹了在iOS開(kāi)發(fā)中,如果想要統(tǒng)計(jì)Xcode工程的代碼行數(shù)該如何實(shí)現(xiàn),文章給出了詳細(xì)的方法和示例代碼,對(duì)大家的理解和學(xué)習(xí)很有幫助,本文中還分享了統(tǒng)計(jì)java文件和xml文件的代碼,有需要的朋友們下面來(lái)一起看看吧。2016-10-10深入學(xué)習(xí)iOS7自定義導(dǎo)航轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了iOS7自定義導(dǎo)航轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-02-02IOS 獲取已連接的wifi信息的實(shí)現(xiàn)代碼
這篇文章主要介紹了IOS 獲取已連接的wifi信息的實(shí)現(xiàn)代碼的相關(guān)資料,這里提供實(shí)現(xiàn)代碼幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08iOS開(kāi)發(fā)UICollectionView實(shí)現(xiàn)拖拽效果
這篇文章主要為大家詳細(xì)介紹了iOS開(kāi)發(fā)UICollectionView實(shí)現(xiàn)拖拽效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01