iOS - NavigationController经常出现的问题
来源:互联网 发布:淘宝申请退款后发货 编辑:程序博客网 时间:2024/05/04 18:37
情况一:
[self.navigationController pushViewController: sampleViewController animated:true];
BUG:界面无反应
分析可能出错的原因:
1:self.navigationController为nil,空指针执行pushViewController直接跳过,接着sampleViewController会释放掉,所以界面会无反应。
self.navigationController为神马会空呢?navigationController是UIViewController父类继承来的属性,不是随便都能用的,除非你当前viewController是被nav push进来的,或者用xib/代码做成navigationcontroller的root了,cocoa的代码应该是给赋值了。(题外话,我很多界面就是局部用了某个ViewController,这种情况该viewController的nav为空,如果要正确使用,可以从app取,可以自己赋值,可以整体界面取。。。想咋取都行)
2、self.navigationController为nil,界面挂了
如果你sampleViewController用到了网络异步请求,在initWithXXX的时候会去取数,那么你10有89会挂掉。
原因分析:大家网络请求,经常如下:
TwitterClient *twitterClient = [[TwitterClient alloc] initWithTarget:self action:@selector(XXXReceive:obj:)];
[twitterClient getXXX:param];
恭喜你,这种情况不管是不是navigationController为空,你程序极容易挂掉,原因就是因为网络请求我们都会用异步方式来拉取数据,当数据回来之后,会回调到本类的XXXReceive:obj方法,
但是如果界面退出了,数据才收到将如何?那就是不是空指针调用了,TwitterClient里纪录的需要回调的内存地址上神马情况都有可能是,回调。。杯具了
解决办法:twitterClient做成成员,在析构的时候该咋收拾twitterClient的就咋收拾一下吧
3、self.navigationController为nil,界面挂了
和上文一样twitterClient成员了,dealloc也清理了现场,还是会挂
原因分析:异步的问题,twitterClient已经取到数据,但是sampleViewController已经被释放了,but dealloc根本没来得及进来。。。
解决办法,1:确保nav正确,2:尽量在界面viewDidLoad的时候网络请求数据,在dispear的时候清理网络。
情况二:
reason: 'Pushing a navigation controller is not supported'
报上面的错误,原因是:
大家知道,可以将ViewController push到一个 NavigationController中。就像是入栈操作!
将一个NavigationController再次push到NavigationController中时,报错,出現了
reason: 'Pushing a navigation controller is not supported'的错误。
应该是,NavigationController不支持push进來的对象是NavigationController吧。
修改方法是:将要进入的页面不去继承UINavigationController
情况三:
有时候项目里会有一种消息推送, 就是弹出提示用户消息, 而消息中带有链接, 当你点击连接时不能跳转,
这种情况是因为你的self.navigationController = nil 造成的,
因为你弹窗的那个控制器没有用UINavigationController包装
- iOS - NavigationController经常出现的问题
- iOS使用NavigationController经常出现的问题
- iOS使用NavigationController经常出现的问题
- iis经常出现的问题
- 网络通讯经常出现的问题
- iOS navigationController颜色透明问题
- iOS swift 关于NavigationController遇到的一些问题及解决方法
- iOS 真机测试经常出现的不能运行的问题及解决方案
- j2sdk1.4.2_07经常出现的问题
- iis 经常出现的问题以及解决方案
- 编程中经常出现的问题
- xcode编译经常出现的问题
- QT发布时经常出现的问题
- ssh项目中经常出现的问题
- win7经常出现问题
- IOS navigationController.popToViewController的使用
- iOS面试经常用到的问题
- iOS面试经常用到的问题
- 我的java web登录RSA加密
- HDU2955 Robberies 01背包
- L4操作系统(L4/Fiasco)
- 数据库SQL优化大总结之 百万级数据库优化方案
- J2SE基础篇——数据类型、执行过程、进制、编码
- iOS - NavigationController经常出现的问题
- Oracle Clusterware Cannot Start on all Nodes: Network communication with node <NAME> missing for 90%
- android蓝牙耳机及手咪开发
- 字符串验证码,数字验证码生成
- HTML5视频video
- Halcon例程学习:print_check.hev(光学字符检测)
- 如何让您日进万元!钱何去何从?
- 浅析代码优化
- Java内存分配全面浅析