私のビュー用に手動でUINavigationBarを管理しています。 Bar自体と最初のUINavigationItemは、Interface Builderで作成されます。私のコードでは、さまざまなイベントに基づいて、新しいナビゲーションアイテムをバーにプッシュし、適切なビューをメインビューのサブビューとしてペイントします。それはすべて問題ないと思われますが、Navbarの戻るボタンを選択すると、2つのアイテムが1つのアイテムスタックから切り取られ、予想通りに1つのアイテムスタックから外されます。テストするために、私はバーとトラップ2つのデリゲートメソッドのためのデリゲートとしての私のコントローラを設定します。UINavigationBarは「戻る」でスタックから2つのアイテムをポップしているようです
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item;
と
- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item;
私は、右のポップの前に、ナビゲーションバー内の項目が正しいことを発見しましたポップしたアイテムが最後のアイテムであっても、ポップ直後の2番目のメソッドではアイテムが1になります。何とか中間アイテムが欠落しています。私はこれをどのようにデバッグするのか困惑しており、どんな考えにも感謝しています。
私はさまざまな理由でナビゲーションコントローラを使用していないことに注意してください。
のようにユーザーが開始またはプログラムである場合は、[はい、ありがとう。おそらく何かがdidPopItemとshouldPopItemを2回呼び出すと思っていたので、私はそれらをトラップできるようにデリゲートメソッドを設定しました。彼らは一度だけ呼び出されます。 ナビゲーションコントローラを実装するよりもviewcontrollerを拡張する方が簡単だったようです。そして、IBがこれを設定するツールをあなたに与えたら、それはOKだろうと思った。加えて、私はかなりiphone devには新しく、フレームワークの仕組みを理解するのが好きです。私は今、自分のやり方で仕事をしてきました。そして、これを私の理解を逃れた環境で、もう一つ別のものに挑戦しました... – farhadf