码迷,mamicode.com
首页 > 其他好文 > 详细

(九十)使用多个storyboard+代码实现控制器的分开管理

时间:2015-07-26 22:40:07      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:oc   ios   storyboard   多个storyboard   

使用单个storyboard会使得项目难与管理,使用纯代码又会过于麻烦,因此如果能将二者结合起来,并且使用多个storyboard,会使得项目简单简单、方便许多。

下面以一个简单的视图关系为例,介绍多个storyboard的用法。

①有page1和page2两个页面,点击page1的Detail按钮会弹出page1Detail视图,点击page1Detail的返回按钮又会返回。

②page1和page2通过tabbar切换。

我们创建page1、page2、page1Detail三个storyboard,每个有自己的控制器,注意设置每个控制器为initial ViewController,否则在加载storyboard的控制器时会崩溃

【具体步骤】

①删除工程设置中Main Interface的默认设置,因为要用tabbar连接两个控制器,应当通过代码实现。

技术分享

②在AppDelegate中创建window,创建tabbar,把window的rootViewController设置为tabbar。

加载storyboard,从storyboard拿到默认控制器,然后设置tabbar的viewControllers为page1、page2,最后不要忘了调用window的makeKeyAndVisible方法。


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    
    self.window.backgroundColor = [UIColor whiteColor];
    
    UITabBarController *tb = [[UITabBarController alloc] init];
    
    // 加载storyboard
    UIStoryboard *page1Sb = [UIStoryboard storyboardWithName:@"page1" bundle:nil];
    UIStoryboard *page2Sb = [UIStoryboard storyboardWithName:@"page2" bundle:nil];
    // 创建并添加到tabbar
    tb.viewControllers = @[page1Sb.instantiateInitialViewController,page2Sb.instantiateInitialViewController];
    
    self.window.rootViewController = tb;
    
    [self.window makeKeyAndVisible];
    
    return YES;
}

通过这样设置,就可实现tabbar包着page1、page2两个控制器。


③在page1中点击Detail按钮时modal一个detail控制器,同样是通过加载storyboard、获取默认控制器、调用presentViewController:::方法modal这个控制器。

- (IBAction)detailClick:(id)sender {
    
    // 加载storyboard
    UIStoryboard *detailSb = [UIStoryboard storyboardWithName:@"page1Detail" bundle:nil];
    // 创建控制器
    UIViewController *vc = detailSb.instantiateInitialViewController;
    [self presentViewController:vc animated:YES completion:nil];
    
}

④modal的控制器的返回通过dismiss实现。

- (IBAction)backClick:(id)sender {
    
    [self dismissViewControllerAnimated:YES completion:nil];
    
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

(九十)使用多个storyboard+代码实现控制器的分开管理

标签:oc   ios   storyboard   多个storyboard   

原文地址:http://blog.csdn.net/xyt8023y/article/details/47071957

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!