ナビゲーションベースのiPhoneアプリを持っています。テーブルビューのセルを押すと、新しいUIViewControllerがナビゲーションスタックにプッシュされます。このビューコントローラでは、viewDidLoadメソッドでカスタムtitleViewを設定しています。
- (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は、2番目のViewControllerで割り当てが解除されたカスタムtitleViewにアクセスしようとします。コード内のカスタムtitleView部分をコメントアウトすると、アプリは機能します。2番目のViewControllerの割り当てが解除される前に、navigationItem.titleViewをnilに設定しようとしましたが(アップルのドキュメントにあります)、それは役に立ちません。
このクラッシュを防ぐために私ができることのヒントはありますか?
ありがとう、マーク。