(九十)使用多个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];

}

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

时间: 2024-11-13 12:04:39

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

同过代码 加载 storyboard 中的 控制器 controller

一.通过代码加载storyboard文件创建控制器的view   Test.storyboard  前名是文件名,后面的storyboard是文件的扩展名 // 1. 应用程序启动完成,会调用此方法,启动之后,将不再调用此方法!// 如果因为内存等原因,应用程序被操作系统干掉,再次点击图标,会调用此方法! - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)l

使用storyboard创建导航控制器以及控制器的生命周期

使用storyboard创建导航控制器以及控制器的生命周期 一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在storyboard中,默认的控制器是View Controller,而我们需要的是导航控制器,那么就把系统的给删掉,拖一个导航控制器进来,导航控制器中默认的第一个子控制器是一个tableview controller,这里不需要,把它删掉,重新拖三个View Controller到界面上进行连线,简单的设置就可以了.  

IOS开发——UI进阶篇(八)pickerView简单使用,通过storyboard加载控制器,注册界面,通过xib创建控制器,控制器的view创建,导航控制器的基本使用

一.pickerView简单使用 1.UIPickerViewDataSource 这两个方法必须实现 // 返回有多少列 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; // 返回第component有多少行 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

谷歌代码库已超过 20 亿行代码,他们是如何管理的

谷歌代码库已超过 20 亿行代码,他们是如何管理的? IT蓝豹发表于 2015/10/22 Google有多庞大?要回答这个问题,我们可以看收入,看股价,看客户数量,看影响力.但是这都还不够充分.说到规模,那么Google绝对是一个巨大的计算机软件帝国.为了印证着一点,我们还可以看看Google的代码规模. 周一,Google员工 Rachel Potvin 在一个硅谷举办的工程会议上提到了代码量这个问题(看视频,请科学上网).根据她的估计,你平时用到的Google互联网服务的软件(包括搜索服务

iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期

一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在storyboard中,默认的控制器是View Controller,而我们需要的是导航控制器,那么就把系统的给删掉,拖一个导航控制器进来,导航控制器中默认的第一个子控制器是一个tableview controller,这里不需要,把它删掉,重新拖三个View Controller到界面上进行连线,简单的设置就可以了.           按钮连线,按住ctrl,右边界面选择push

IOS开发storyboard篇~~使用storyboard创建导航控制器以及控制器的生命周期

一.基本过程 新建一个带storyboard的项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在storyboard中,默认的控制器是View Controller,而我们需要的是导航控制器,那么就把系统的给删掉,拖一个导航控制器进来,导航控制器中默认的第一个子控制器是一个tableview controller,这里不需要,把它删掉,重新拖三个View Controller到界面上进行连线,简单的设置就可以了.(tableview controller

通过storyboard实现modal控制器

展示效果 : 请问 : 实现的步骤是什么 ? 第一步,搭建界面. 注意 : 要销毁当前被弹出的控制器只能使用代码来完成. 第二步,实现数据的传值. 1> 在第一个控制器中,当modal出下一个控制器时将文本框中的内容显示到下一个控制器的导航栏标题中. 2> 在第二个控制器界面中也有一个文本输入框,当销毁第二个控制器界面的时候,需要将文本框中的内容回传到第一个控制器的文本输入框中. 请问 : 如何来实现数据的回传 ? 方法一  代理!     // 步骤一代码实现 ---------------

iOS面试题05-父子控制器、内存管理

内存管理.父子控制器面试题 1.建立父子关系控制器有什么用 回答:1>监听屏幕选中 2>如果想拿到你当前的很小的一个控制器所在的导航控制器必须要跟外面比较大的控制器建立父子关系,才能一层一层往上拿导航控制器 2.第三方API是怎么用的? 回答:0>大公司的开放API 1>github上面别人发布的框架 2>第三方API在官方文档都有说明,按照官方文档一步一步做 3>参考官方提供的示例程序 4>先自己创建一个工程试试,等熟悉了,在使用到项目中 3.列举现在熟悉iOS

delphi 在代码中 添加 TO-DO 并且 管理

TO-DO List是一项非常好用的功能.采用她可以让我们很清楚的了解以前完成了那些任务,还有哪些任务需要做,由谁负责完成,是不是比较紧急的任务等.今天来不及完成的,明天上班就可以很快的找到任务所在的位置. 打开TODOLIST:点击菜单[View]--> 选择菜单[To-Do List] 显示窗口内容有: Action Item:任务项: !:                优先级 Module:       所属模块 Owner:        所有者 Category:     种类 右键