0

に がUIViewController埋め込まれていUINavigationControllerます。rootViewControllerには、すでにいくつかのボタンが含まれていますleftBarButtonItems

UIViewControllerここで、新しいものを上にプッシュするUINavigationControllerと、新しいUIViewControllerものを既存のものを-ButtonleftBarButtonItemsで拡張したままにします。Back

現在の状況は次のとおりです。新しいものを押すとUIViewController、既存のものleftBarButtonItemsは消え、Back-Button のみが表示されます。

4

2 に答える 2

1

各 UIViewController には独自の "navigationItem" プロパティがあり、そのビュー コントローラーのナビゲーション バー表現として機能します。特定の UIViewController の navigationItem にボタンを追加すると、追加先のビューコントローラーにスコープが制限され、他のビューコントローラーには保持されません。

基本的に、ロード時に各ビューコントローラーのナビゲーションアイテムにボタンを追加する必要があります。UIViewControllers 以外のクラスにこの作業を行うメソッドを追加することで、これを簡単にすることができます。ただし、各ボタンをタッチしたときに何が起こるかはビューコントローラー固有の可能性があるため、タッチ操作が関連するビューコントローラーにどのようにフィードバックされるかを考える必要があります。おそらく、ある種の NavigationBarDelegate プロトコルか何かを導入しますか?

于 2012-07-19T13:06:09.660 に答える
0

同じView Controllerの複数のインスタンスを詳細View Controllerにプッシュするときに、これを回避するためのハッキーな方法のように見えるものを見つけました。これは同様に機能すると思います。新しいView Controllerをプッシュする前に、これを使用しました:(ブラウザは私の新しいView Controllerです)

   self.browser.navigationItem setLeftBarButtonItem:self.detailViewController.navigationItem.leftBarButtonItem animated:YES]; // Sets popover view controller button.
   [self.detailViewController.navigationController pushViewController:self.browser animated:YES];

これはおそらく良い方法ではありませんが、私の状況ではうまくいくようです。

于 2012-07-20T01:58:59.840 に答える