UIViewController的双向关系

时间:2012-06-07 06:44:02

标签: iphone objective-c ios cocoa-touch parent-child

我有一个容器视图控制器,说ContainerViewController和另一个UIViewController(PhotoViewcController),我将其添加为ContainerViewController中的childviewcontroller。这条消息从ContainerViewController转发到PhotoViewcController。但是,如何在父子视图控制器中使用双向关系?这样消息就从PhotoViewcController传递到ContainerViewController。

2 个答案:

答案 0 :(得分:3)

在像这样的子类中创建一个属性

@property (assign) id pDelegate;

并合成它,当你转到子视图控制器时,在推送/存在之前将委托设置为self

childController.pDelegate = self;

现在,当您要发送消息时,请执行此操作

if([self.pDelegate respndsToSelector:@selector(popedBackFromChild:)])
{
 [self.pDelegate popedBackFromChild:<some object>];
}

告诉我你是否需要进一步解释

答案 1 :(得分:1)

有两种方法可以做到这一点。在子类中为它定义协议并在父类中定义它,或者您可以发布和通知并将必要的信息作为字典传递。正如@The Saad告诉你的那样,这是定义协议的最佳方式,但通知更容易管理。 附:父类是您将更新信息的类,Child类将提供它。