新升级手机系统,然后跟着xcode、电脑系统升级,Xcode版本9.4,然后运行程序,没问题。然后点击跳转程序直接崩溃,崩溃到main()函数。
究其原因---navigation使用方法有点变化
首先,在一些页面中为了自定义导航栏,所以在
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
然后自定义一些按钮啥的。然后在跳转的页面设置
self.navigationItem.title = @"关于我们";
xcode6.3、xcode8.3运行没问题,而且一直没动过。然而使用最新下载的xocde9.4,点击页面跳转,直接崩溃。而且毫无崩溃信息。
这时候,怀疑xcode有些新特性,所以赶紧查了下xcode9都有哪些新功能和改变,然而并没有找到解决我问题的办法。
然后,自己重新创建一个viewcontroller,然后跳转到这个新建的viewcontroller,发现并没有崩溃,看来不是项目的问题,问题还是在于各个页面的代码。
最后,只能选择一个相对简单的viewcontroller,然后代码全部注释掉,然后一行一行打开运行。直到
self.navigationItem.title = @"关于我们";
程序崩溃。。。what? excuse me?这是什么意思,我设置一个title有问题吗?
然后注视掉这一行,打开其他代码,程序稳定运行。。。
好吧,看来真的就是这个东西在搞鬼。
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 45)];
label.text = @"关于我们";
label.font = [UIFont systemFontOfSize:19];
label.textAlignment = NSTextAlignmentCenter;
label.center = CGPointMake(kScreenWidth/2.0, 25);
label.textColor = [UIColor whiteColor];
[self.view.addSubview: label];
改成这个,运行,程序正常。。。
后来发现隐藏navigation的时候就
[self.view.addSubview: label]
如果没有隐藏就使用
self.navigationItem.titleView = label;
这真是个奇葩的问题。。。不过好在找到了问题