子视图中的ObjC / iPad按钮调用主控制器中的方法。怎么样?

时间:2011-05-10 23:41:51

标签: objective-c cocoa-touch

我的模特一团糟吗?

我正在编写一个包含多个视图的iPad应用。我有一个masterViewController,可以查看其他视图控制器。其中一些子视图包含按钮。

用户单击这些按钮可更改视图。我的意图是masterViewController负责更改这些视图。但是如何?

当按下按钮时,masterViewController如何判断?

@implementation subViewControllerOne

- (IBAction) switchToSubViewTwo {

//Where to I send my message?
[masterViewController myMethod] //doesn't work because I need to message the specific instance

}

2 个答案:

答案 0 :(得分:2)

你可以

  1. 将对主控制器的引用传递给子控制器并告诉它
  2. 让您的主控制器成为单身人士并以此方式引用
  3. 您可以让您的子控制器发布主控制器监听的NSNotification。

答案 1 :(得分:0)

您可能希望通过AppDelegate查找对控制器的引用。

确保在AppDelegate中为masterViewController添加插座并连接它(使用Interface Builder)。然后,在子视图的控制器中,获取对AppDelegate的引用并运行您的方法,如下所示:

  MyAppDelegate *delegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
  [delegate myMethod];