iPhone でのシナリオ:
ユーザーが戻るボタンをタップすると、UINavigationBar
デリゲート メソッド ( のサブクラスで実装) が次のようにをUINavigationController
返します。YES
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
{
// Verify stuff...
return YES;
}
現在、docsによると、ナビゲーションバーとコンテンツの同期を維持するのはアプリの責任であり、それを行う場所はデリゲートメソッドにあります
- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item
問題は、didPopItem
ナビゲーション バーのポップ アニメーション シーケンスが終了した後にのみ呼び出されることです。そのため、[self popViewControllerAnimated: NO]
そこを呼び出すと、最初にナビゲーション バーがスライドし、次にコンテンツがスライドします。
そして、それは間違っているように見えます。
pop...
デリゲートメソッドでナビゲーション コントローラーを呼び出すと、shouldPop...
アニメーションがオーバーラップしているというエラー メッセージが表示され、最終状態がクリーンではありません。
だから私の質問は、UINavigationController のコンテンツを変更する別の方法はありますか?
対象OSはiOS4.2以降です。
戻るボタンの代わりに別の左ボタンを作成できることは承知していますが、デリゲートを使用する方がクリーンであることがわかりました。さらに、「実際の」戻るボタンが必要です。