1

私が持っているのは、アプリの上部にある 3 つのボタンです。

これらの 3 つのボタンは常にすべてのビュー コントローラーに表示されます。

ボタンをクリックすると、それぞれのアクションが実行されます。

これはすべてのviewcontrollerにあるので、私が計画しているのは、このボタンをクリックすると呼び出されるメソッドをどこかに定義することです。

これを行っているのは、メソッドを一度記述してどこでも呼び出すためです。

それ以外の場合は、すべてのビュー コントローラーのメソッドを記述する必要がありました。後で変更があった場合は、すべてのビュー コントローラーに対して行う必要があります。

どうすれば同じことを達成できますか?

私がやりたいことは、1 つの UIViewController でいくつかのメソッドを定義し、そのメソッドを多くの異なる ViewController で呼び出すことです。

4

6 に答える 6

2

独自のコンテナー ビュー コントローラーを作成し、真のコンテンツ ビュー コントローラーを子として追加することを検討してください ( を使用addChildViewController:)。その後、コンテナー ビュー コントローラーは、実際のコンテンツ ビュー コントローラーに影響を与えることなく、グローバル ボタンとそのアクションを管理できます。

于 2013-09-25T21:45:21.713 に答える
1

コンテナ ビュー コントローラを使用する以外のもう 1 つの手法は、各ビュー コントローラをプロジェクト内の別のビュー コントローラにサブクラス化することです。

@interface MainViewController : UIViewController; // implements your buttons and their actions

@interface OneViewController : MainViewController;
@interface TwoViewController : MainViewController;
@interface ThreeViewController : MainViewController;
于 2013-09-25T21:48:04.160 に答える
1

サブクラス化はオプションですが、Objective-C カテゴリを使用すると柔軟性が向上します。

UIViewController を拡張するカテゴリを作成します。

@interface UIViewController (SharedLogic)

- (void)didPressFirstButton:(id)sender;
- (void)didPressSecondButton:(id)sender;
- (void)didPressThirdButton:(id)sender;

@end

各ボタンのターゲット/アクションのペアを指定するクラスは、#importこのカテゴリに必要ですが、それ以外の場合は、必要な動作を取得する必要があります。

于 2013-09-25T21:56:22.207 に答える
0

NSNotificationCenter を使用して、コードベースのさまざまな場所に UI イベントをブロードキャストすることを検討してください。

于 2013-09-25T22:05:56.937 に答える