从子视图控制器到容器视图控制器的通信

Posted

技术标签:

【中文标题】从子视图控制器到容器视图控制器的通信【英文标题】:Communication from child view controller to container view controller 【发布时间】:2015-11-20 01:34:16 【问题描述】:

我正在构建视图控制器层次结构。 我有一个子视图控制器,距离容器视图控制器 2 层。

这个子视图控制器有一个按钮来执行某个动作。

将其传达给容器视图控制器的最佳方式是什么。 我尝试使用响应者链发送消息。 考虑到 2 个级别的深度,拥有一个代表似乎非常棘手。 有没有更好的办法?

【问题讨论】:

【参考方案1】:

你可以使用这个函数找到包含的ViewController,将ContainViewController替换为你拥有的Class

- (ContainViewController *)containViewController

    UIViewController *iter = self.parentViewController;
    while (iter) 
        if ([iter isKindOfClass:[ContainViewController class]]) 
            return (ContainViewController *)iter;
         else if (iter.parentViewController && iter.parentViewController != iter) 
            iter = iter.parentViewController;
         else 
            iter = nil;
        
      
    return nil;

【讨论】:

以上是关于从子视图控制器到容器视图控制器的通信的主要内容,如果未能解决你的问题,请参考以下文章

从子视图控制器获取容器视图的故事板标识符

在 Cocoa,UIResponder 中将消息从子视图发送到父视图?

从子视图控制器调用函数不起作用

如何从子视图导航到其他视图控制器?

iOS:与父视图控制器通信

从子视图 UIViewcontroller 到其他 UIViewController