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

您使用视图控制器的部分原因是为了保持独立和整洁。一个视图控制器不应该真正了解它的兄弟姐妹。它唯一的职责是管理它的视图和子视图控制器。父视图控制器应该负责管理兄弟视图控制器。您的选择是告诉父视图控制器您想要发生什么,并让父视图控制器将消息发送到另一个视图控制器,“污染”视图控制器的状态,如 Metabble 建议的那样相互引用,或使用通知模式。

为此,我经常使用 NSNotificationCenter。在每个视图控制器中注册通知,然后发布通知以触发其他视图控制器中的方法调用。

于 2012-12-31T01:05:57.807 回答
0

当您创建控制器时,给它们相互引用并存储它们。

于 2012-12-31T01:04:10.557 回答