У меня есть приложение для навигации на основе iPhone. Когда вы нажимаете на ячейку в представлении таблицы, новый UIViewController переносится в стек навигации. С этой точки зрения контроллера я установка пользовательских titleView в методе viewDidLoad:UIViewController custom titleView crashes app
- (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 = ДА):
*** -[CALayer retain]: message sent to deallocated instance 0x5a5fd80
Из того, что я могу видеть RootViewController все еще пытается получить доступ к пользовательской titleView, который был освобождаться со вторым контроллером просмотра. Как только я прокомментирую пользовательскую часть titleView в своем коде, приложение работает. Я попытался установить для параметра navigationItem.titleView значение nil (как показано в документах apple), прежде чем второй ViewController будет освобожден, но это не поможет.
У вас есть намек на то, что я могу сделать, чтобы предотвратить этот крах?
Thanks, Mark.
Где именно вы отпуская navItem? – Kalle
В методе dealloc второго контроллера представления. – Cornelius