1

こんにちは、ios アプリケーションを開発しています。UI はストーリーボードを使用して設計されたので (初めて使用します)、次のようになります。

  • エントリ ポイント: ナビゲーション コントローラ
  • rootViewビューコントローラー(他の多くのビューにプッシュし、そのうちのいくつかはUITableViewです)
  • 次に、ペン先からロードされたビューをプログラムで(一部のコントローラーで)プッシュします(これについては問題ありません)

各コントローラーには定義されたタイトルがあります。

私がやりたいことは、すべてのView Controllerのナビゲーションバーに正しいボタンを配置して、(プログラムで)別のコントローラーにプッシュできるようにすることです(希望はペン先にありますが、問題なくSBに移動できます)

私が試してみました:

  • カスタムクラスとnibファイルを使用していますが、カスタマイズされていない同じナビゲーションバーが表示されます
  • initWithCoder を上書きして、nib ファイルにリダイレクトできるようにしますが、無限ループが発生します (StakOverflow、やった!)
  • 2 番目のクラスを使用して無限ループを回避しますが、例外が発生します。

    キャッチされていない例外 'NSGenericException' が原因でアプリを終了しています。

  • navbar クラスの init メソッドにボタンを手動で追加しますが、効果はありません

  • ナビゲーション コントローラー initWithCoder のナビゲーション バーを置き換えますが、影響はありません
  • 同じですが、ナビゲーション コントローラの viewDidLoad メソッドでは、影響はありません
  • 同じですが、rootView Controller では、影響はありません

私が使用していたコードはこれでした(そしていくつかのバリエーション):

UIBarButtonItem *BTN = [[UIBarButtonItem alloc] 
      initWithImage:[[UIImage alloc] initWithContentsOfFile:@"img.png"] 
      style:UIBarButtonItemStyleBordered 
      target:self 
      action:@selector(pushView)];

[[self navigationItem] setRightBarButtonItem:BTN];

これをアーカイブする方法はありますか、またはビューごとに手動で表示する必要がありますか?

- ありがとう

4

1 に答える 1

3

はい、プロパティの各View Controllerで行う必要がありnavigationItemます。ただし、どこでも必要なボタンを構成して返すメソッドを持つcategoryonクラスを作成することで、簡単にすることができます。UIBarButtonItemしたがって、そのカテゴリのメソッドを呼び出すだけでよく、どこにでも同じコードを記述する必要はありません。

以下に類似の投稿をいくつか示します。

UINavigationController のすべてのビュー コントローラーに同じボタンを追加する

UITabBarController 内のすべてのナビゲーション ビュー コントローラーに UIBarButtonItem をプログラムで追加する

于 2012-08-09T18:43:53.227 に答える