Storyboard Reference

在某些狀況下。你開發的應用可能包括有各類各樣的複雜界面,假設你使用Storyboard來管理這些界面,一般你會將這些界面依照對應的邏輯分紅不少子模塊,放在不一樣的storyboard裏,比方註冊相關的放到Register.Storyboard,圖片相關的放到Photos.Storyboard。而主界面放到Main.Storbyoard。app

這麼作的優勢是不只可以縮小每個storbyoard的打開速度。而且可以加強維護性,使界面邏輯更加清晰。ide

一般建議能在Storyboard裏作的儘可能在Storyboard裏作,下降對應的代碼量。post

在iOS9曾經,Storyboard之間的通訊(Segue)僅僅能依靠代碼來實現。ui

比方咱們想在Main.Storyboard裏引用Login.Storyboard:code

let loginStoryboard = UIStoryboard(name: "Login", bundle: nil) //Login爲對應Storyboard的名字,不需要後綴名。

let loginViewController = loginStoryboard.instantiateViewControllerWithIdentifier("LoginInterface")// 依據storyboard裏聲明的StoryboardID獲取該storyboard裏的ViewController視頻


首先咱們經過給UIStoryboard構造方法傳入需要引用的Storyboard文件名(這裏爲Login)。而後在獲得的loginStoryboard調用instantiateViewControllerWithIdentifier方法獲得對應的ViewController。

好消息是,在Xcode7中引入了Storyboard Reference(故事版引用),可以用來替代上面的代碼。圖片

如下將舉一個簡單的樣例來解說怎樣使用Storyboard Reference。開發


首先若是你已經下載了Xcode7-beta版本號。新建一個Single View Application,該模版會本身主動建立一個Main.storyboard文件。同一時候該文件中默認有一個ViewController Scene。在項目裏新建另一個storyboad。取名爲Second.storyboard。打開Second.storyboard文件。在Object Library裏拖拽一個ViewController,並在屬性面板裏勾選「Is Initial View Controller」,同一時候將該View Controller裏的view背景顏色設爲藍色以示差異。get

如圖所看到的:it



返回到Main.storyboard文件,拖拽一個Button到惟一一個ViewController裏,現在咱們想經過點擊Button跳轉到Second.storyboard裏的ViewController裏去,該怎樣作呢?細緻觀察Object Library咱們會發現多出一個Storyboard Reference,如圖所看到的:



這個Storyboard Reference表明Storyboard文件的引用,經過屬性面板(Attribute Inspector)可以配置該Storyboard Reference。


 Storyboard Reference屬性面板有三個字段,第一個字段(Storyboard)指定你要引用的Storyboard文件名稱,第二個字段指定你要跳轉到哪一個ViewController。該ID即爲Storyboard裏ViewController的Storyboard ID。



假設不填的話,默以爲該Storyboard的Initial View Controller。第三個字段指定該Storyboard存在於哪一個Bundle,比方假設來自於其它的Framework。可以指定該Framework的bundle,假設存在於同一個項目,可以留着不填。


現在咱們在Main.storyboard裏拖拽一個Storyboard Reference到畫布裏去,點擊該Storyboard Reference,在右邊的面板裏選擇屬性面板,Storyboard字段選擇Second。Reference ID不填(使用Initial View Controller)。bundle也不填。這個時候Storyboard Reference已經配置好了,如圖所看到的:



在Main.storyboard文件中,按住Ctrl鍵不放,鼠標拖拽Button到Storyboard Reference,彈出的對話框裏選擇Present Modally.



好的,大功告成,Build and Run,點擊button。你會發現來自於Second.storyboard裏的View Controller被成功展現出來。(僅僅是有一個bug,彈出藍色界面後沒法返回了。。

。)


另外,假設曾經的項目僅僅有一個Storyboard文件,你可以依據對應的邏輯重構Storyboard,僅僅需要選中你要重構的View Controllers,而後點擊菜單Editor->Refactor to Storyboard,在彈出的對話框中輸入新的Storyboard文件名稱。而後點擊肯定,這樣你選中的View Controllers全部都被放到新建的Storyboard文件中,同一時候原來的Storyboard文件中用配置好的Storyboard Reference來替代被移除的View Controllers.




參考視頻:What's new in Storyboards

相關文章
相關標籤/搜索