私はこの問題を解決しましたが。なぜそれが機能したのかを説明してくれる人が本当に必要です。
表示されるViewControllerとしてUINavBar
カスタムを持つを持っています。UIView
ナビゲーションバーのタイトルビューの代わりにカスタムボタンを作成し、次のように設定しましたautorelease
(既存の非ARCコードをカスタマイズしています):
- (void)loadView {
..
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(presentEmailThreadList)
forControlEvents:UIControlEventTouchDown];
[button setTitle:[NSString stringWithFormat:@"1 of %d",self.numThreads] forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
self.navigationItem.titleView = [button autorelease];
}
このコードは、ビューをモーダルに表示するときに機能します。
[self presentModalViewController:emailThreadListVC animated:YES];
しかし、EXC_BAD_ACCESS
それをナビゲーションスタックにプッシュしようとするとエラーが発生し、新しいVCの[戻る]ボタンをクリックします。
[self.navigationController pushViewController:emailThreadListVC animated:YES];
特に:でクラッシュしUINavigationItemTitleView
ます
titleView
元のVCに戻ろうとすると、はもう存在しないと結論付けました。つまり、スタック上にVCをプッシュすると、autorelease
参照カウントがデクリメントされましたが、私がtitleView
VCをモーダルにプッシュします。
なぜですか?