在某些狀況下。你開發的應用可能包括有各類各樣的複雜界面,假設你使用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視頻
好消息是,在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.