Storyboards
Storyboards是一個定義了App中不同螢幕中建立聯絡的新方法。通過Storyboards你可以瀏覽、建立整個App的UI,可以在一個螢幕的不同視圖控制器之前建立聯絡。
一個螢幕的內容稱為一個情境。
用StoryBoards建立一個項目
在new project設定對話方塊中選擇使用StoryBoard。
在Storyboard上增加一個導航控制器
Storyboard檔案在IB中開啟,只需雙擊一個空順序圖表像版畫布上 的空間,內容就會縮小。
簡單的用過Storyboard,現在介紹一下使用方法:
開啟.storyboard檔案後,有一個白板視圖控制器,我們需要增加一個導航控制器,在物件程式庫中,我們找到NavigationController對象,將它拖到左側的畫布上,畫布上面增加了兩個視圖控制器,我們把箭頭指向的視圖控制器刪掉。選中剩下的NavigationController控制器,然後摁下control鍵,按住滑鼠左鍵,拉出一條直線直至viewController控制器上(建立內建的白板控制器),放開滑鼠左鍵和control鍵後會彈出一個提示框,點擊rootViewController。這隻是第一步。這樣完成之後你運行程式螢幕出現的還是一個空白的畫面。
重要的一部是,畫布的左側有一個View Controller Scene介面,選中Navigation Controller 後,點擊view菜單,選擇view->show Attributes Inspector(顯示內容檢查器)[也就是Xcode右上方一排六個圖表中的左數第四個]。將initial Scene後面的單選框選中。
好了,現在可以運行程式了。
增加一個按鈕,點擊按鈕後,將一個視圖控制器推出堆棧。
在物件程式庫中找到View Controller對象,將它拖到畫布上,然後選擇一個按鈕,放入第一個視圖控制器裡(如果視圖控制器處於縮小狀態將不能增加按鈕,放大之後即可),按鈕選中狀態下,按住鍵盤上的control和滑鼠左鍵,一直拖到第二個視圖控制器上,鬆開滑鼠左鍵和control鍵後,選擇push。運行一下效果就出來了。
將資料從一個螢幕傳輸到另一個螢幕
使用Segue對象。(segue [segwei]繼續)
當發生不同情境之間轉換時,Storyboard的運行庫會為這個轉換建立一個segue對象。segue就是類UIStoryboardSegue的一個執行個體。當轉換髮生時,當前視圖控制器(在segue後退出螢幕)將會收到prepareForSegue:sender:的訊息,此處的prepareForSegue參數會變成UIStoryboardSegue類的一個對象,如果需要傳輸資料,需要使用prepareForSegue:sender:的方法。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSLog(@"Source controller = %@",[segue sourceViewController]);
NSLog(@"Destination controller = %@",[segue destinationViewController]);
NSLog(@"Segue Identifier = %@",[segue identifier]);
}
在一個已有項目中添加Storyboard
從file菜單,選擇new->new file ->Resource ->Storyboard 選項,然後Next。
選擇合適的裝置序列(iPhone,iPad) 完成之後next。
選擇儲存地方。
在你的項目結構中,找出Info.plist檔案,如果你有這些鍵,把他們從.plist檔案中刪除:
*NSMainNibFile(將會以Main nib檔案及名稱出現)。
*NSMainNibFile~ipad(將會以Main nib檔案及名稱出現(ipad))。
如果你只有適用於iphone或者ipad的App,為iPhone建立一個稱作UIMainStoryboardFile的鍵或者為ipad建立一個稱作UIMainStoryboardFile~ipad的健,如果你有一個通用的APP,就建立2個健。然後儲存.plist檔案。
最後一布,把application:didFinishLaunchingWithOptions:方法從APP委託的執行中刪除。依據你的APP是如何建立的,這個方法可以建立不同的視圖控制器和視窗等等,有了Storyboard後,你就不再需要它了。