UIViewController的自定义titleview的应用程序崩溃
-
25-09-2019 - |
题
我有一个导航基于iPhone应用程序。 当你按下一个细胞在tableview中一个新的UIViewController推到导航堆栈。在此视图控制器我设置的自定义titleview的在viewDidLoad方法:
- (void)viewDidLoad {
[super viewDidLoad];
// Setup custom navigation title
[self setTitle:@"Mediaportal"];
navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
[navItem setTitle:[theServer name]];
[navItem setSubTitle:@""];
[self.navigationItem setTitleView:navItem.view];
…
}
在我切换回RootViewController的:
[self.navigationController popToRootViewControllerAnimated:YES];
该应用与以下错误崩溃(NSZombieEnabled = YES):
*** -[CALayer retain]: message sent to deallocated instance 0x5a5fd80
从我可以看到RootViewController的仍试图访问定制titleview的,将其与所述第二视图控制器释放。有一次,我在我的代码注释掉定制titleview的部分应用程序的工作原理。 我试图navigationItem.titleView设置为第二的ViewController之前零(如在苹果文档中找到)被释放,但是这并不能帮助。
你有一个提示我能做些什么来防止这种崩溃?
谢谢, 标记
解决方案 2
我终于找到了它的溶液(相当简单的一个)。 我不得不alloc和通过其属性初始化的navItem然后它被保留:
self.navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
其他提示
我有这个确切的同样的错误了一个月左右前,正是同样的情况。它驱使我疯了。
我发现我大跌眼镜太的viewController尚未在所有的释放。我有一个自定义的UIButton子类添加到然而这一观点在第二视图已经被推已被释放。所以弹出回来的时候,在UIButton的是不存在。
检查你大跌眼镜回视图,以确保你不会有任何类,你是解除分配,或没有你知道被自动释放。
希望这有助于。
不隶属于 StackOverflow