起動の間に UINavigationController の状態を復元しようとすると、UIBarButtonItem/UINavigationBar の奇妙な動作に遭遇しました。
以下のコード スニペットは、ナビゲーション コントローラーの状態を復元する方法を示しています。このコード スニペットは、viewDidLoadメソッドで実行されます。
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
if ([ud objectForKey:HBStateRestorationQuoteSelection]) {
NSInteger index = [ud integerForKey:HBStateRestorationQuoteSelection];
// Fetch Quote
NSDictionary *quote = [self.quotes objectAtIndex:index];
// Initialize Quote View Controller
HBQuoteViewController *vc = [[HBQuoteViewController alloc] initWithNibName:@"HBQuoteViewController" bundle:[NSBundle mainBundle]];
vc.quote = quote;
// Push Quote View Controller Onto Navigation Stack
[self.navigationController pushViewController:vc animated:NO];
}
その結果、何らかの理由で戻るボタンのタイトルが切り捨てられます。この動作は、ナビゲーション コントローラーが通常の方法で使用されている場合には発生しません。
切り捨ては、ナビゲーション バーのタイトルのサイズによるものではないことに注意してください。前述したように、この状態復元ロジックを使用しない場合、バック バー ボタンのタイトルは正常に表示されます。
また、 viewWillAppearメソッドに復元コードを入れたり、カスタム バック バー ボタンを作成してバック バー ボタンのタイトルを変更したりしてみましたが、いずれも問題が解決しません。