(九十)使用多个storyboard+代码实现控制器的分开管理
2017-06-18 08:24
996 查看
使用单个storyboard会使得项目难与管理,使用纯代码又会过于麻烦。因此假设能将二者结合起来,而且使用多个storyboard。会使得项目简单简单、方便很多。
以下以一个简单的视图关系为例,介绍多个storyboard的使用方法。
①有page1和page2两个页面,点击page1的Detailbutton会弹出page1Detail视图。点击page1Detail的返回button又会返回。
②page1和page2通过tabbar切换。
我们创建page1、page2、page1Detail三个storyboard,每一个有自己的控制器,注意设置每一个控制器为initial ViewController。否则在载入storyboard的控制器时会崩溃。
【详细步骤】
①删除project设置中Main Interface的默认设置,由于要用tabbar连接两个控制器,应当通过代码实现。
②在AppDelegate中创建window,创建tabbar,把window的rootViewController设置为tabbar。
载入storyboard。从storyboard拿到默认控制器,然后设置tabbar的viewControllers为page1、page2。最后不要忘了调用window的makeKeyAndVisible方法。
通过这样设置,就可实现tabbar包着page1、page2两个控制器。
③在page1中点击Detailbutton时modal一个detail控制器,相同是通过载入storyboard、获取默认控制器、调用presentViewController:::方法modal这个控制器。
④modal的控制器的返回通过dismiss实现。
以下以一个简单的视图关系为例,介绍多个storyboard的使用方法。
①有page1和page2两个页面,点击page1的Detailbutton会弹出page1Detail视图。点击page1Detail的返回button又会返回。
②page1和page2通过tabbar切换。
我们创建page1、page2、page1Detail三个storyboard,每一个有自己的控制器,注意设置每一个控制器为initial ViewController。否则在载入storyboard的控制器时会崩溃。
【详细步骤】
①删除project设置中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中点击Detailbutton时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+代码实现控制器的分开管理
- (九十)使用多个storyboard+代码实现控制器的分开管理
- 使用ASP实现网站的“目录树”管理的代码
- 使用mini-define实现前端代码的模块化管理
- iOS控制器管理,代码,xib,Storyboard,Segue - iOS
- 在TFS中使用Git Tags(标签或标记),实现代码的版本管理
- 在storyboard中使用代码实现跳转
- 使用导航控制器在storyboard上利用segue实现控制器的调转及数据的互相传递从sourceViewController到distationViewController
- Gitlab和Sourcetree结合使用实现代码管理
- 如何使用 require.js ,实现js文件的异步加载,避免网页失去响应,管理模块之间的依赖性,便于代码的编写和维护。
- 使用mini-define实现前端代码的模块化管理
- ios-day11-06(使用代码的方式创建导航控制器——UINavigationController、使用导航控制器管理其他控制器)
- eclipse使用github实现版本控制,轻松解决代码管理问题
- 使用Intellij Ideal连接Team Foundation Server (TFS)实现代码版本管理
- linux下使用C或C++实现进程管理代码
- TabHost ----使用1(用代码来实现功能但没有将界面设计和代码分开)
- 纯代码和使用Storyboard的时候控制器中初始化方法的执行
- SpringMVC编程使用Controller接口实现控制器实例代码
- 使用java代码来实现dvd管理系统
- 使用git服务器实现生产环境应用服务器代码更新管理的方案