[self.view addSubview:vc2.view]程序崩溃的解决办法
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setFrame:CGRectMake(, , , )];
[btn setTitle:@"Show ViewController2" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(showView2:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn];
} -(void)showView2:(UIButton *)sender
{
TPViewController2 *vc2 = [[TPViewController2 alloc] init];
[self.view addSubview:vc2.view]; // vc2里的btn事件会报错
}
加一行代码就不报错了。
-(void)showView2:(UIButton *)sender
{
TPViewController2 *vc2 = [[TPViewController2 alloc] init];
[self.view addSubview:vc2.view];
[self addChildViewController:vc2];
}
或者把vc2用@property的方式声明成属性也行。
总结下:
问:定义成第一个的@property属性,为什么就可以执行了?
答:作为属性创建的,系统会自动创建加载,而作为子view,就要自己加载。
问:我们应该用@property好还是用addchildViewController好。
答:看具体情况,没有谁好谁不好,看你要实现什么功能,比如:你的vc2如果是模板,那只能用addchildViewController,因为你不知道有多少个Vc2要创建。但是用属性,也有很多好处,可以直接使用,方便。
还是要把概念用法,你要是了解属性的用法,肯定不会怀疑属性的问题,很明显应该和加载有关,你在vc2的几个方法里面打个log就知道的,通过addsubview的方式,有很多VC的方法是不走的,说明VC没加载进来,这时候用VC的方法,那还不crash啊。addchildViewController其实就是让VC2加载进来,并且保持对象存在。
建议你有时间可以看看常用对象的头文件,里面很多方法,有的常用,有的不常用,说不定什么时候就用到了。
[self.view addSubview:vc2.view]程序崩溃的解决办法的更多相关文章
- Android学习笔记(5)----启动 Theme.Dialog 主题的Activity时程序崩溃的解决办法
新建了一个Android Studio工程,在MainActivity的主界面中添加了两个按钮,点击其中一个按钮用来启动 NormalActivity,点击另一按钮用来启动DialogActivity ...
- [转] IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法
IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法 源文件:http://www.cnblogs.com/yuejin/p/3385584.html ...
- IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法
当打开IIS管理器,或配置网站时提示错误:配置文件的XML格式不正确 且是applicationHost.config的问题,那么肯定是applicationHost.config被破坏,IIS就崩溃 ...
- [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...
一.问题: 之前写的一款安卓4.4的应用程序,用来连接蓝牙BLE,而现在拿出来用新的AS编译(此时SDK为6.0,手机也是6.0)应用程序并不能搜索到蓝牙,查看log总是报权限错误: Need ACC ...
- Xcode 6.3.2 提交APP(Upload Archive)时崩溃的解决办法
最近在上传为客户做的APP时,发现Xcode总会在进行到Upload Archive这一步时崩溃,导致APP上载不了.下面说说网上搜索到的几种解决办法. 方法一 亲测有效,很简单: 1.重新打开Xco ...
- adobe media encoder cc 2015在win10中打开崩溃的解决办法(该方法同样适用于adobe其他产品)
今天就给大家讲讲adobe media encoder cc 2015启动的时候崩溃的问题,先来看看现象.就是这样了,然后我在网上找了很多办法,有的方法已经过时了,也或者因为现在新版本的adobe m ...
- 安装IIS之后运行aspx 显示“服务器应用程序不可用” 解决办法
引起这个的原因大概是现安装了.Net Framework,后装的IIS导致.Net没有在IIS里注册. 另外,还有可能是ASPNET账户没有IIS所指定服务器目录的权限.在资源管理器中找到“工具-文 ...
- PLSQL Developer概念学习系列之登录连接Oracle时出现(没有登录) -PL / SQL Developer:ORA - 12541: TNS :无建听程序的错误解决办法(图文详解)
不多说,直接上干货! 前期博客 PLSQL Developer概念学习系列之如何正确登录连接上Oracle(图文详解) 如用scott.scott_password进行登录,orcl是全局数据库 ...
- Selenium学习(三)Selenium总是崩溃的解决办法
在使用selenium打开浏览器总是崩溃,最近查资料获得可行的解决办法: import sys from selenium import webdriver p = __import__('selen ...
随机推荐
- CheeseZH: Octave basic commands
1.Basic Operations 5+6 3-2 5*8 1/2 2^6 1 == 2 %false ans = 0 1 ~= 2 %true ans = 1 1 && 0 %AN ...
- MVC应用积累
1.Controller中的跳转 (1)直接Redirect后加(Controller/Action):Response.Redirect("/Home/Index"); (2)直 ...
- ubuntu环境下android开发环境安装
http://blog.csdn.net/shulianghan/article/details/38023959 Android程序开发的环境配置 Ubuntu下自带openjdk的卸载 你无需管它 ...
- ASP.NET之旅--深入浅出解读IIS架构
在学习Asp.net时,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net. 他们耐心. 细致地告诉你如何一步步拖放控件. 设置控件属性.编写 CodeBehind代码,以实现某个特定的功能. ...
- Java中执行存储过程和函数(web基础学习笔记十四)
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- Canvas简述
HTML Canvas API有两方面优势可以弥补:首先,不需要将所绘制图像中的每个图元当做对象存储,因此执行性能非常好:其次,在其他编程语言现有的优秀二维绘图API的基础上实现Canvas API相 ...
- css before和after伪元素应用
1.说明 ":before" 伪元素可以在元素的内容前面插入新内容. ":after" 伪元素可以在元素的内容之后插入新内容. 伪元素默认展示为inline, ...
- html字符转义
常用表: No. 文字表記 10進表記 16進表記 文字 Comment 001 " " " """ quotation mark ...
- java中list、set和map 的区别(转)
作者:佚名出处:IT专家网论坛 2009-06-17 13:00 List按对象进入的顺序保存对象,不做排序或编辑操作.Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素 ...
- Linux磁盘分区及链接文件的特点
系统分区 传统的分区fdisk 最大支持2T的硬盘分区 对存储,多分区使用的parted 主分区:最多只能有4个 扩展分区 最多只能有1个 主分区加扩展分区最多有4个 不能写入数据,只能包含逻辑分区 ...