Storyboard Reference,storyboard

來源:互聯網
上載者:User

Storyboard Reference,storyboard

在某些情況下,你開發的應用可能包含有各種各樣的複雜介面,如果你使用Storyboard來管理這些介面,通常你會將這些介面按照相應的邏輯分成許多子模組,放在不同的storyboard裡,比如註冊相關的放到Register.Storyboard,圖片相關的放到Photos.Storyboard,而主介面放到Main.Storbyoard。這麼做的好處是不僅可以縮小每個storbyoard的開啟速度,而且可以增強維護性,使介面邏輯更加清晰。

通常建議能在Storyboard裡做的盡量在Storyboard裡做,減少相應的代碼量。在iOS9以前,Storyboard之間的通訊(Segue)只能依靠代碼來實現。

比如我們想在Main.Storyboard裡引用Login.Storyboard:

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背景顏色設為藍色以示區別。:



返回到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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.