如何将消息发送到作为UIViewController的子类的parentViewController?

时间:2011-05-16 16:52:14

标签: ios uiviewcontroller

我有一个UIViewController(MyViewController)和另一个视图控制器,我通过My​​ViewController(称之为SecondViewController)呈现模态。我希望能够使用

从SecondViewController向MyViewController发送消息
[self.parentViewController hideSecondViewController];

但是由于parentViewController被定义为UIViewController,而hideSecondViewController不是UIViewController的方法,我收到一条警告说“UIViewController可能无法响应'hideSecondViewController'”。它工作正常,因为它可以在程序中成功发送消息,但由于我在MyViewController中#import SecondViewController,我不能在SecondViewController中#import MyViewController。有什么方法吗?

2 个答案:

答案 0 :(得分:3)

  

什么时候解雇模态   查看控制器,首选   方法是让父视图   控制员做解雇。其他   单词,相同的视图控制器   提出了模态视图控制器   还应该承担责任   尽可能地解雇它。   虽然有几种技术   用于通知父视图控制器   它应该以模态方式解雇它   提出孩子,首选   技术是委托

     

在基于委托的模型中,视图   控制器以模态呈现   必须为其定义协议   委托实施。协议   定义由。调用的方法   模态视图控制器响应   特定的行动,例如a。中的水龙头   完成按钮。那么代表就是   负责实施这些   方法并提供适当的   响应。在父视图的情况下   作为代表的控制者   它的模态孩子,反应会   包括解雇儿童观点   控制器在适当的时候。

View Controller Programming Guide for iOS了解详情。


P.S:

  

因为我#import SecondViewController   在MyViewController中,我不能#import   MyViewController中   SecondViewController。

要解决循环依赖问题,您可以使用forward declaration

答案 1 :(得分:3)

最好像albertamg一样重新设计您的架构,但这应该有效:

  

[自   dismissModalViewControllerAnimated:YES];

你可以在呈现和呈现的视图控制器上调用dismiss,它也会做同样的事情。

相关问题