参考主视图控制器......需要代码

时间:2011-11-11 13:38:12

标签: objective-c

我有一个基于视图的应用程序(不是导航或基于标签的...)

我的主视图控制器是从app委托调用的,并从xib启动。

然后我使用presentModalViewController通过它自己的xib和视图控制器在屏幕上显示另一个视图。

将数据传递给该视图控制器没有问题。

但是,当我关闭第二个视图控制器时,我想将数据发送回我的应用程序的主视图控制器,但我无法弄清楚如何引用它。实际上,如果可能的话,我想在主视图控制器中调用一个方法。

我一直在努力解决这个问题并在网上找到了建议,但我似乎无法让它发挥作用。我希望有人可以提供示例代码来执行此操作。

P.S。这个“主视图控制器”仍被称为“根视图控制器”,或者仅在处理视图控制器堆栈(即导航或制表视图控制器)时使用该术语

编辑: 我相信布莱恩的解决方案会有效,所以我接受了答案。然而,我最终使用NSNotificationCenter来实现这一点,我觉得作为初学者理解起来有点简单

1 个答案:

答案 0 :(得分:2)

您可以使用委派模式。在模态视图控制器的头文件中,为新的委托协议创建一个接口...

@protocol ModalViewControllerDelegate <NSObject>

- (void)sendData:(Data *)someData;

@end

...并为您的ModalViewController提供一个实现此协议的新实例变量:

@property (nonatomic, assign) id<ModalViewControllerDelegate> delegate;

您的主视图控制器应该实现此协议...

@interface MainViewController : UIViewController <ModalViewControllerDelegate> {

...并在呈现模态视图控制器之前将其自身设置为委托:

ModalViewController *modalViewController = [[[ModalViewController alloc] init] autorelease];
[modalViewController setDelegate:self];
// Present modal view controller

主视图控制器应该实现委托协议的方法:

- (void)sendData:(Data *)someData {
    NSLog("I have just received some data: %@", someData);
}

然后在模态视图控制器中,只要想要将数据发送回主视图控制器,就可以调用以下方法:

[delegate sendData:someData];
相关问题