StoryBoard是IOS5的新特性之一,把程式View的設計弄成了繪畫板(storyboard),它讓枯燥程式猿們體驗了下做一次畫家。如果是第一次接觸StoryBoard,想用StoryBoard做一個最簡單的IOS程式,我建議點傳送門,這是一篇不錯的入門教程,有比較多的圖。
原先是通過File's Owner載入視圖資源,然後通過代碼來完成viewController之間的關係,現在StoryBoard通過UIStoryboardSegue(我的翻譯是續航器)完成viewController之間關係的構建,就是說原來的通過代碼來控制的viewController之間的轉換(replace、push、popover、modal),可以可視的通過StoryBoard的“一條線”(實際還是原來的程式碼完成,現在換成xcode來自動做)來自動完成。
剛開始使用StoryBoard總會覺得有些不好下手,只會用xcode自動建立的Segues,需要重新整理下StoryBoard的概念,StoryBoard不是一個完全解決方案,即不是必須要用StoryBoard替代所有xib,我可以在StoryBoard建立一個完全獨立的viewController,也可以把僅把StoryBoard作為我程式的一部分來使用。說的直白點就是“混搭”,StoryBoard與Xib混搭,與代碼(僅指建立ViewController的)混搭,完成xocde在開發效率與靈活性,上手難度與功能全面的平衡。
現在來說一個具體例子吧,比如我們先建立一個Tabbed Aplicaiton,這裡包含兩個viewController,一個first view controller ,一個second view controller ,我們想動態建立第三個viewController , 即一點這個按鈕,下面的tab變成三個選項,代碼傳送門。
要使用storyboard上一個獨立的view controller,需要一下幾個步驟
1 添加一個單獨的view controller到storyboard
2 在view controller的inspector中完成identifier的設定
3 使用UIStoryboard class裝載storyboard資源
4 使用[UIStoryboard instantiateViewControllerWithIdentifier:] 建立一個新的view controller執行個體
5 將view controller用到所需的地方
UIStoryboard * storyBoard; UIViewController *vc; //獲得UITabBarController tb = self.tabBarController; viewControllers =[[NSMutableArray alloc] initWithArray: tb.viewControllers]; storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; vc = [storyBoard instantiateViewControllerWithIdentifier:@"ThirdViewController"];
總體的代碼比較簡單,所以沒有做什麼,主要分享這個解決問題的思路,還有疑問的童鞋留言吧,