0

いくつかのView Controllerに表示されるメニューボタンがあります。使用されるコードは、UIViewControllerviewDidLoadメソッドに追加されます。

以下の同じ定型コードを再利用するのではなく。

self.menuButtonItem.title = @"Menu2";
self.menuButtonItem.target = (MESMainNavigationController *)self.navigationController;
self.menuButtonItem.action = @selector(showMenu);

これを実装する最良の方法は何ですか?

のサブクラスでUIViewControllerあり、オーバーライドする必要がありますviewDidLoadか?

また

UIViewControllerカテゴリーにすべきです。これはすべてのView Controllerに影響するわけではありませんが、特定のセットだけに影響します.

4

3 に答える 3

1

私が実装した方法は、単純に util メソッドを作成し、必要なパラメーターを渡すことでした (ターゲットとセレクターはすべて同じであると仮定して渡しませんが、viewController ごとに異なる場合は、それらをパラメーターとして渡すこともできます)。 ):

Utils.m:

+ (void) buildMenu:(UIViewController *) viewController
{
  viewController.menuButtonItem.title = @"Menu2";
  viewController.menuButtonItem.target = (MESMainNavigationController *)viewController.navigationController;
  viewController.menuButtonItem.action = @selector(showMenu);
}

すべてのView Controllerから次のように呼び出します。

[Utils buildMenu: self];
于 2013-09-30T17:41:39.317 に答える