利用StoryBoard实现复杂项目

建立一个Storyboard工程这篇文章中,介绍了建立一个最简单的storyboard项目,下面详细介绍一下StoryBoard,主要从如下几方面介绍:app

  • 建立UITabBarViewController、UINavgationController、UIViewController共同使用
  • xib和storyboard共同使用
  • 多个storyboard共同使用

下面以一个实际项目来,分上面三步来详细介绍一下storyboard的使用框架

第一步:建立UITabBarViewController、UINavgationController、UIViewController共同使用iphone

最后实现的storyboard的效果是:ide

image


介绍一下上面的结构,其中tabBarController是storyboard的开始视图,见下图:svn

image

由tabBarController分出三个子视图,其中前两个子视图是navigationcontroller,一个是viecontroller。其中navigationcontroller中有相应的子viewcontroller。google

下面开始实现上面的工程:日志

1)建立一个工程叫stroyboarddemo,选择空工程code

image

建立好以后的截图:事件

image

2)添加一个storyboardip

image

起名为:Storyboard,打开初建立的storyboard,能够看到什么也没有。

image

3)添加一个tabBarController

image

image

image

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)编译运行代码。

image

6)下面把tabBarController的子视图换成navigationcontroller

打开soryboard,删除tabBarController的孩子。

image

而后添加两个navigationcontroller

image

navigationcontroller和tabBarController关联起来。

按住control建拖动鼠标,选择关联便可。

image

image

下面修改两个navigationcontroller跟controller的view的颜色。

image

7)在次编译运行。

imageimage

8)在navigationcontroller中在添加孩子视图

我先添加了三个viewcontroller

image

而后他们分别与控制器相连,相连以前先在相应的父视图中添加一个下一页的按钮。

image

下面按钮和新添加的viewcontroller相联系

image

一样在添加其余的按钮。

image

9)运行

imageimage

imageimageimage

目前为止,咱们尚未添加一行代码,便可实现一个相对比较复杂的控制器。虽然实现了一个比较复杂的控制器的框架,可是在实际项目中,每一个视图中的数据多是动态加载的,这时候咱们须要和代码相关联。接下来我将介绍一下storyboard怎么和相应的代码相关联。

10)、添加相应viewcontroller的实体类FirstViewController

image

11)、把FirstViewController和相应的视图相关联

image

12)在FirstViewController中添加按钮的事件。

-(IBAction)onClickButton:(id)sender 

    NSLog(@"FirstViewController on click button"); 
}

而且和相应的按钮相关联。

13)运行,当点击绿色视图中的下一页的时候,出现日志:

image

由于按钮有两个事件,一个是执行上述方法,还有一个做用是压栈下一个视图进入控制器。其前后顺序是先执行方法在压栈。

第二步、xib和storyboard共同使用

咱们常须要实现如下需求,首先是一个登陆页面或者是注册页面。登陆成功以后跳入到上面复杂的导航界面。下面详细介绍一下怎么实现一个xib实现的登陆页面,跳转到storyboard的导航页面。

1)先建立一个登陆页面LoginViewController

image

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)运行便可。

image

4)在xib中,添加登陆按钮。

image

5)添加登陆按钮相应的事件

-(IBAction)onClickButton:(id)sender 

    
}

6)xib和按钮事件相关联

image

7)按钮事件和上面的复杂控制器相关联

-(IBAction)onClickButton:(id)sender 

    UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
    self.view.window.rootViewController=[stryBoard instantiateInitialViewController]; 
}

8)运行

imageimage

第三步是多个storyboard共同使用

多人合做或者项目有必定的复杂度,使用一个storyboard,确定使storyboard复杂,咱们能够根据需求把复杂的逻辑拆分红若干个storyboard。

1)咱们在上面的基础上在添加一个tabBarController的孩子

image

2)添加一个ManagerViewController

image

3)、新添加的ManagerViewController和相应的控制器相关联

image

4)在视图中添加按钮

image

5)在ManagerViewController中添加按钮事件

-(IBAction)onClickButton:(id)sender 
{

}

6)按钮事件和视图按钮相关联

image

7)添加一个新的storyboard,叫作second

image

8)添加导航器

image

9)在ManagerViewController的按钮事件中导航进入second便可

-(IBAction)onClickButton:(id)sender 

    UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"second" bundle:nil]; 
    [self presentModalViewController:[stryBoard instantiateInitialViewController] animated:YES]; 
}

10)运行

imageimageimageimageimage

 

上面就是使用storyboard实现一个相对比较复杂的项目。

项目源代码:http://easymorse-iphone.googlecode.com/svn/trunk/storyboary/

相关文章
相关标签/搜索