在建立一個Storyboard工程這篇文章中,介紹了建立一個最簡單的storyboard項目,下面詳細介紹一下StoryBoard,主要從如下幾方面介紹:app
下面以一個實際項目來,分上面三步來詳細介紹一下storyboard的使用框架
第一步:建立UITabBarViewController、UINavgationController、UIViewController共同使用iphone
最後實現的storyboard的效果是:ide
介紹一下上面的結構,其中tabBarController是storyboard的開始視圖,見下圖:svn
由tabBarController分出三個子視圖,其中前兩個子視圖是navigationcontroller,一個是viecontroller。其中navigationcontroller中有相應的子viewcontroller。google
下面開始實現上面的工程:日誌
1)建立一個工程叫stroyboarddemo,選擇空工程code
建立好以後的截圖:事件
2)添加一個storyboardip
起名爲:Storyboard,打開初建立的storyboard,能夠看到什麼也沒有。
3)添加一個tabBarController
4)把storyboard添加到工程中。在NationalLibraryConteollerAppDelegate中添加下面的代碼。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
self.window.rootViewController=[stryBoard instantiateInitialViewController];
return YES;
}
首先是獲取到storyboard的引用,而後是找到跟controller。
5)編譯運行代碼。
6)下面把tabBarController的子視圖換成navigationcontroller
打開soryboard,刪除tabBarController的孩子。
而後添加兩個navigationcontroller
navigationcontroller和tabBarController關聯起來。
按住control建拖動鼠標,選擇關聯便可。
下面修改兩個navigationcontroller跟controller的view的顏色。
7)在次編譯運行。
8)在navigationcontroller中在添加孩子視圖
我先添加了三個viewcontroller
而後他們分別與控制器相連,相連以前先在相應的父視圖中添加一個下一頁的按鈕。
下面按鈕和新添加的viewcontroller相聯繫
一樣在添加其餘的按鈕。
9)運行
目前爲止,咱們尚未添加一行代碼,便可實現一個相對比較複雜的控制器。雖然實現了一個比較複雜的控制器的框架,可是在實際項目中,每一個視圖中的數據多是動態加載的,這時候咱們須要和代碼相關聯。接下來我將介紹一下storyboard怎麼和相應的代碼相關聯。
10)、添加相應viewcontroller的實體類FirstViewController
11)、把FirstViewController和相應的視圖相關聯
12)在FirstViewController中添加按鈕的事件。
-(IBAction)onClickButton:(id)sender
{
NSLog(@"FirstViewController on click button");
}
而且和相應的按鈕相關聯。
13)運行,當點擊綠色視圖中的下一頁的時候,出現日誌:
由於按鈕有兩個事件,一個是執行上述方法,還有一個做用是壓棧下一個視圖進入控制器。其前後順序是先執行方法在壓棧。
第二步、xib和storyboard共同使用
咱們常須要實現如下需求,首先是一個登陸頁面或者是註冊頁面。登陸成功以後跳入到上面複雜的導航界面。下面詳細介紹一下怎麼實現一個xib實現的登陸頁面,跳轉到storyboard的導航頁面。
1)先建立一個登陸頁面LoginViewController
2)修改NationalLibraryConteollerAppDelegate,先進入登陸頁面。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
LoginViewController *loginViewController=[[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
// UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
self.window.rootViewController=loginViewController;//[stryBoard instantiateInitialViewController];
return YES;
}
3)運行便可。
4)在xib中,添加登陸按鈕。
5)添加登陸按鈕相應的事件
-(IBAction)onClickButton:(id)sender
{
}
6)xib和按鈕事件相關聯
7)按鈕事件和上面的複雜控制器相關聯
-(IBAction)onClickButton:(id)sender
{
UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
self.view.window.rootViewController=[stryBoard instantiateInitialViewController];
}
8)運行
第三步是多個storyboard共同使用
多人合做或者項目有必定的複雜度,使用一個storyboard,確定使storyboard複雜,咱們能夠根據需求把複雜的邏輯拆分紅若干個storyboard。
1)咱們在上面的基礎上在添加一個tabBarController的孩子
2)添加一個ManagerViewController
3)、新添加的ManagerViewController和相應的控制器相關聯
4)在視圖中添加按鈕
5)在ManagerViewController中添加按鈕事件
-(IBAction)onClickButton:(id)sender
{
}
6)按鈕事件和視圖按鈕相關聯
7)添加一個新的storyboard,叫作second
8)添加導航器
9)在ManagerViewController的按鈕事件中導航進入second便可
-(IBAction)onClickButton:(id)sender
{
UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"second" bundle:nil];
[self presentModalViewController:[stryBoard instantiateInitialViewController] animated:YES];
}
10)運行
上面就是使用storyboard實現一個相對比較複雜的項目。
項目源代碼:http://easymorse-iphone.googlecode.com/svn/trunk/storyboary/