用代码创建并实例化在storyboard中声明的ViewController
我们的项目最早是基于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创建MainViewController
- UIStoryboard* 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:方法创建的时候,根本就不会被调用
用代码创建并实例化在storyboard中声明的ViewController的更多相关文章
- 如何装载Storyboard中的ViewController?
如上图所示,如何装载Storyboard中指定的ViewController? 首先,需要指定ViewController的ID,如上图右上方红色方框内的Storyboard ID.然后使用下面的 ...
- Spring Boot 使用Java代码创建Bean并注册到Spring中
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/catoop/article/details/50558333 声明同一个类下的多个实例: packa ...
- Spring Boot 使用Java代码创建Bean并注冊到Spring中
从 Spring3.0 開始,添加了一种新的途经来配置Bean Definition,这就是通过 Java Code 配置 Bean Definition. 与Xml和Annotation两种配置方式 ...
- (41)Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】
已经好久没有讲一些基础的知识了,这一小节来点简单的,这也是为下节的在Spring Boot中使用多数据源做准备. 从Spring 3.0开始,增加了一种新的途径来配置Bean Definition,这 ...
- 代码创建storyboard
代码创建storyboard方式如下 // 加载storyboard UIStoryboard *storyboard = [UIStoryboard StoryboardWithName:@&quo ...
- SharePoint 2013 中代码创建列表查阅项字段
1.首先,打开VS创建两个List Definition,分别是Address和City,如下图: 2.City列表里修改Title为City Name,其实内部名称还是Title,注意一下: 3.给 ...
- Android开发 ---代码创建选项菜单、隐藏菜单项、菜单的生命周期,菜单按钮图标设置、搜索框、xml中设置子菜单
1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> < ...
- Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...
- 在代码中加载storyBoard中的ViewController
首先, 要在storyBoard中画出想要的VC, 然后建一个VC类和他关联.如图 : 调用时找如下写: DetailViewController *detailVC = [[UIStoryboard ...
随机推荐
- 编写Java程序,使用抽象类和抽象方法构建不同动物的扑食行为,抽象类设计
返回本章节 返回作业目录 需求说明: 不同的动物都有进食的行为,但是在进食前需要捕获到食物后才可以进食. 要求定义一个抽象的动物类,该类中有一个抽象的捕食方法,和一个非抽象的进食方法.在进食方法中调用 ...
- 初识python: 面向对象是个啥?
编程范式:编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 ,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多 ...
- vue - 指令创建 vue工程
1.在需要创建工程的文件夹里打开cmd 执行 vue -V 看看版本号是否正常, 创建工程 vue create [工程名称] 如:vue create mytestvue 然后会弹出选择 按方向键, ...
- 使用 Jenkins + Ansible 实现 Spring Boot 自动化部署101
本文要点:设计一条 Spring Boot 最基本的流水线:包括构建.制品上传.部署.使用 Docker 容器运行构建逻辑.自动化整个实验环境:包括 Jenkins 的配置,Jenkins agent ...
- 日K蜡烛图
股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线.按周的周K线.按月的月K线等.以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早 ...
- 计算机视觉--CV技术指南文章汇总
前言 本文汇总了过去本公众号原创的.国外博客翻译的.从其它公众号转载的.从知乎转载的等一些比较重要的文章,并按照论文分享.技术总结三个方面进行了一个简单分类.点击每篇文章标题可阅读详细内容 欢迎关注 ...
- javascript的AMD规法--esl与requirejs浅介。
AMD规范,全称是Asynchronous Module Definition,即异步模块加载机制.从它的规范描述页面看,AMD很短也很简单,但它却完整描述了模块的定义,依赖关系,引用关系以及加载机制 ...
- 公司内部一次关于kafka消息队列消费积压故障复盘分享
背景现象 1.20晚上8点业务线开始切换LBS相关流量,在之后的1个小时时间内,积压量呈上升趋势,一路到达50W左右,第二天的图没贴出具体是50W数字,以下是第一天晚上的贴图部分. 现象一: 现象二: ...
- Go 结构体方法
#### Go 结构体方法本来今天有些事情忙的不准备更新内容了,后来提前完成了, 所以还是要更新了; 毕竟坚持本就是一件不容易的事情!加油,相信不管是大家还是我,都有一些事情想要做,那就坚持吧,剩下的 ...
- String类-intern方法
1 package cn.itcast.p1.string.demo; 2 3 class StringObjectDemo { 4 public static void main(String[] ...