0

childViewController02からchildViewController01のメソッドを呼び出す方法を知りたいのですが。これらのViewControllerは、次のように、parentViewControllerで宣言されます。

○ParentViewController.m:

ChildViewController01 *childViewController01 = [[ChildViewController01 alloc] init];
[self.view addSubView:childViewController01];

ChildViewController02 *childViewController02 = [[ChildViewController02 alloc] init];
[self.view addSubView:childViewController02];

childViewController01からparentViewControllerのメソッドを呼び出す方法を知っています。

○ParentViewController.m:

childrenViewController01.childDelegate01 = self;

○ChildrenViewController01.h:

@property (nonatomic, retain) id childDelegate01;

○ChildrenViewController01.m:

[childDelegate01 performSelector:@selector(parentMethod:) withObject:hogeObj];

したがって、parentViewControllerからchildViewControllersのメソッドを呼び出すことができます

○ParentViewController.m:

- (void) parentMethod:(id)hogeObj {
    [childViewController02 childMethod02];
}

これはとても疲れます。childViewController01からchildMethod02を直接呼び出したいのですが。方法をご存知でしたら、良い方法を教えてください。ありがとう。

4

2 に答える 2

1

ビューコントローラを使用する理由の1つは、物事を分離して整理するためです。1つのViewControllerは、その兄弟について実際には何も知らないはずです。ビューと子ビューのコントローラーを管理するのは唯一の責任です。親ViewControllerは、兄弟ViewControllerの管理を担当する必要があります。これを行うためのオプションは、親のView Controllerに何をしたいかを伝え、親にメッセージを他のView Controllerに送信させるか、Metabbleが提案するように相互に参照してViewControllerの状態を「汚染」するかを使用することです。通知パターン。

私はこの目的のためにNSNotificationCenterをよく使用しました。各ViewControllerで通知を登録してから、通知を投稿して、他のViewControllerでメソッド呼び出しをトリガーします。

于 2012-12-31T01:05:57.807 に答える
0

コントローラを作成するときは、それらを相互に参照して保存します。

于 2012-12-31T01:04:10.557 に答える