結隊開發之多storyboard

Storyboard的出現,讓開發變得像講故事一樣,UI間的關係流程也一目瞭然。它其實是xib的升級版本,將多個xib統一管理了。任何事都有雙面性,Storyboard也有它的缺點。筆者就說說自己的經驗,版本管理中,多人修改很容易嚴生衝突。storyboard中UIViewController太多,找到想要的比較困難(特別是在MBA上)。 這些缺點在結隊開發中就會遇見。 如果我們用xib文件,這樣將UI最小化分隔開,將後用code將這些小單元連接起來,就可以解決這個問題。如果只用xib就展現不出storyboard的故事情節能力。
 
本人提供兩種解決方案:
1. Xib link Xib
2. Storyboard link Storyboard
 
其實它們之間可以兩兩組合,這樣就可以延伸出另外兩種方法:
3. Xib link Storyboard 
4.Storyboard link Xib 
 
1. Xib link Xib
這種方法其實我以上一篇文章已經介紹過了,大家自行閱讀,在此也不多述。
 
2. Storyboard link Storyboard
這種方法與上面方法原理是一樣的,利用加載storyboard時,實例化對應自定義UIViewController類,然後手動addSubview到對link view上,以達到鏈接的目錄。 用言語表達是有點抽象,還是用代碼表達吧,容易理解。
 
在這兒用到了Github上一個人寫的link代碼:RBStoryboardLink。它的用法也在README中說得很清楚了。
 
大家將源碼下載下來,裏面有一個sample:LinkedTabs. 由於原作者用到了cocoapods,所以需要到源碼LinkedTabs目錄下, 運行一個命令行:
  1. pod update 
 
我還是簡單說一下sample的結構。
 
裏面有三個storyboard,分別是MainStoryboard,FirstTabStoryboard, SecondTabStoryboard, 現在需要將MainStoryboard中的兩個UIViewController分別與FirstTabStoryboard,SecondTabStoryboard建立連接,以達到程序運行後,這三個storyboard像是在一起的目的。
 
打開MainStoryboard,定位到Tab1的UIViewController 
 
注意圖中兩個箭頭,上面一個一定要填這個自定義類RBStoryboardLink, 就是個類完成了連接的任務。
 
下面一個箭頭處,是傳遞的屬性與對應的值,在實例化RBStoryboardLink的時候傳送遞給實例化對象。storyboardName這個屬性表示要link到哪兒去,這兒我們要link到FirstTabStoryboard,所以值爲FirstTabStoryboard。還有一個可選屬性sceneIdentifier, 表示要link到Storyboard中的哪一個UIViewController. 如果不傳這個屬性,那就link到FirstTabStoryboard中的initial View Controller.
 
如果我們想link到FirstTabStoryboard中的第二個UIViewController那如何辦呢,很簡單: 
 
如上圖,我們先找到這個被linke的View Controller,然後在Storyboard ID那輸入該View Controller的標識,如在此輸入:NavController.
 
接着在需要link的地方加入sceneIdentifier:NavController, 見下圖箭頭處。
 
 
這樣就link成功了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章