[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 ...
随机推荐
- 使用Python脚本批量裁切栅格
对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或Shape文件.如果要进行批量处理,可以使用ToolBox中的批量 ...
- Windows 之 防火墙
对于只使用浏览.电子邮件等系统自带的网络应用程序,Windows防火墙(firewall)根本不会产生影响.也就是说,用IE.OutlookExpress等系统自带的程序进行网络连接,防火 ...
- webpack打包过滤console.log
在webpack.prod.conf.js里面的plugins里面加上 drop_debugger: true, drop_console: true new webpack.optimize.Ugl ...
- 算法笔记_191:历届试题 大臣的旅费(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考, ...
- Android:Dialog中隐藏键盘的注意事项
场景:弹出一个Dialog.里面有一个EditText.用来输入内容.由于输入时.须要弹出键盘.所以当Dialog消失时.键盘要一起隐藏. 如今我们做一个自己定义的Dialog MyDialog ex ...
- Linux 系统sudo命令
Linux系统中有许多的系统命令和服务为了安全性考虑,因此只有root超级用户才可以去使用.如果普通用户需要做此类操作,则可以使用su - 命令(减号(-)指完全切换到新的用户,即把环境变量信息也变更 ...
- android开发中WebView的使用(附完整程序)
原文地址:http://www.pocketdigi.com/20110216/176.html WebView是个好东西,作用相当于一个迷你的浏览器,采用Webkit内核,因此完美支持html,ja ...
- elasticsearch5.4体验
Elasticsearch是基于Lucene分布式.实时查询的搜索分析引擎.我目前应用在日志集中化处理上... 01.下载elasticsearch5.4 https://www.elasti ...
- 微信小程序裁剪图片成圆形
代码地址如下:http://www.demodashi.com/demo/14453.html 前言 最近在开发小程序,产品经理提了一个需求,要求微信小程序换头像,用户剪裁图片必须是圆形,也在gith ...
- IntelliJ IDEA java项目导入jar包,打jar包
一.导入 1.java项目在没有导入该jar包之前,如图: 2.点击 File -> Project Structure(快捷键 Ctrl + Alt + Shift + s),点击Proje ...