swift 访问容器按钮

swift access container button

我对 Swift 比较陌生。这是我的问题: 我有一个 UIViewController,里面有一个容器。容器有自己的 ContainerViewController。容器是应用程序的 header,其中有一个按钮。

我想根据按钮(容器内)是否被按下来设置 UIViewController 内的 Bool 值。

我不认为将 "mainVC" 与 segue 一起传递会成功:没有必要进行 segue,因为两个视图显示在同一屏幕上。

我是否应该为视图及其容器提供相同的 ViewControllerClass?

非常感谢您的宝贵时间

有不同的解决方案:

  1. 调用 ContainerViewControllerparentViewController(=UIViewController)
  2. 的方法
  3. 使用响应链:
    • UIViewController(子类)中实现 canBecomeFirstResponder() 到 return YES
    • 在 parent 视图控制器中实现一个 buttonPressed(sender:AnyObject)(或其他)方法
    • 从容器视图控制器中调用 UIApplication.sharedApplication().sendAction("buttonPressed:", to: nil, from:self)

这将允许该方法 "travel" 向上响应链,直到找到实现 buttonPressed() 方法的 object。如果您想在其他视图控制器中重用 header 视图,此解决方案会很有用。

  1. 使用委托模式。在容器视图控制器中创建委托 属性 + 协议,并让 parent vc 在 embed-segue 触发的 prepareForSegue() 方法中将自己设置为委托。这也获得了可重复使用的标记。

  2. 如果您正在使用故事板,那么您还可以使用 Unwind Segue