UIViewControllerのカスタムtitleViewは、アプリがクラッシュ
-
25-09-2019 - |
質問
私は、ナビゲーションベースの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のビューコントローラに割り当てが解除されたカスタムtitleViewに、アクセスしようと見ることができるものから。私は私のコードでカスタムtitleViewの一部をコメントアウトするとアプリが動作します。 第二のViewControllerの割り当てが解除される前に、私は(リンゴのドキュメントに見られるような)nilにnavigationItem.titleViewを設定しようとしましたが、それは助けをしません。
あなたは?私はこのクラッシュを防ぐために何ができるかのヒントを持っています。
おかげで、 マークます。
解決 2
私は最終的にそれのためのソリューション(非常にシンプルなもの)を見つけました。 私はALLOCに持っているし、そのプロパティを介してnavItemを初期化、それが保持されます:
self.navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
他のヒント
私は、月ほど前とまったく同じような状況を、この正確に同じエラーが発生しました。それは私がNUTS運転します。
私は私があまりにも飛び出るたのViewControllerが全く割り当てを解除されていなかったことを発見しました。私は、カスタムを持っていたUIButtonサブクラス2番目のビューが押されたときに割り当て解除されていたが、そのビューに追加します。バック飛び出るときに、UIButtonがありませんでした。
を保証するために、あなたが戻って飛び出るされているビューを確認してくださいあなたが割り当て解除されている、またはあなたが知らなくても、自動解放されていることを任意のクラスを持っていませんでした。
希望このことができます。