用代码创建并实例化在storyboard中声明的ViewController
来源:互联网 发布:javascript servlet 编辑:程序博客网 时间:2024/05/22 07:42
我们的项目最早是基于storyboard开发的,所以一开始所有的ViewController都通过storyboard创建,并通过segue连接跳转
但是今天其中一个controller的view,我们需要特别美化一下,用storyboard做很麻烦。所以就把它从storyboard里拿出来了。问题是,原来的segue就不能用了,需要用编码的方式来实现涉及到此controller的跳转
跳转进此controller的代码很常规,之前做模态页面开发的时候已经试过了,所以很简单就写出来:
YLSBootstrapViewController *bootstrapViewController = [[YLSBootstrapViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];bootstrapViewController.view = [[YLSBootstrapView alloc] initWithFrame:CGRectNull];[self presentViewController:bootstrapViewController animated:YES completion:nil];
上面3行代码,分别创建controller,view,以及跳转。但是要从这个controller跳到下一个controller不知道怎么写,因为下一个controller还是由storyboard负责加载和实例化的,不能通过调用initWithNibName:bundle:来创建
搜索了一下,网上说storyboard创建controller,内部调用的是initWithCoder方法,所以在这个方法上研究了一会,最后也没成功,主要是不知道应该如何传参。最后发现方向错了,应该调另一个API:
// 从storyboard创建MainViewControllerUIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"nailshop" bundle:[NSBundle mainBundle]];YLSMainViewController *mainViewController = (YLSMainViewController*)[storyboard instantiateViewControllerWithIdentifier:@"mainViewController"];[self presentViewController:mainViewController animated:YES completion:nil];
在调用之前,需要在storyboard里,给目标ViewController设置identifier
这样就可以通过编码方式,创建storyboard中的ViewController了
PS:
创建ViewController的方式主要就2种。如果通过代码的方式,就调用initWithNibName:bundle:方法;如果是通过storyboard自动创建,则storyboard会隐式调用initWithCoder:方法,这个API一般不需要开发者直接调用,而是通过storyboard API来间接调用。而UIViewController自身的各生命周期方法,根据创建方式的不同,在调用上也会有区别,比如说viewDidLoad方法,在通过initWithNibName:bundle:方法创建的时候,根本就不会被调用
1 0
- 用代码创建并实例化在storyboard中声明的ViewController
- 用代码创建并实例化在storyboard中声明的ViewController
- 在Storyboard中获取Viewcontroller
- storyboard中游离的viewcontroller
- IOS 在storyboard中创建按钮,用代码控制按钮
- storyboard在viewcontroller中放入静态表格
- 如何在自定义的ViewController加载Storyboard里面的ViewController
- 创建一个Storyboard工程 storyboard是在ios5中引入的新控件,能够更加清晰、简单的整合多个ViewController的关系,下面主要介绍一下怎么初建一个storyboard的工程
- 代码装载storyboard中的viewcontroller
- 代码获取Storyboard中的ViewController
- 代码取得storyboard中的viewcontroller
- IOS开发之获取Storyboard创建的ViewController
- IOS开发之获取Storyboard创建的ViewController
- IOS开发之获取Storyboard创建的ViewController
- 在创建实例变量的时候用Set,List,Map等接口声明类型而不是用具体的子类声明的原因之代码重构
- ios5 storyboard 代码获取独立的 viewController对象
- ios5 storyboard 代码获取独立的 viewController对象
- viewcontroller分别从storyboard,nib ,代码的生成方式
- Leetcode: Pow(x, n)
- 线性表的一个算法题
- asp.net配置IIS服务器应用程序不可的解决办法收藏
- atheros无线驱动之:管理帧:认证帧
- Number Transformation CF 251C
- 用代码创建并实例化在storyboard中声明的ViewController
- 题目1044:Pre-Post
- HighCharts初学____(1)
- Siebel Server does not start after changing the SADMIN password on Siebel 8.1.1
- C语言中的联合体和结构体
- Clojure Github 项目收藏
- 【转】5分钟使用Visual Studio和SVN建立源代码管理
- 什么是I帧,P帧,B帧
- nohup