快速访问容器按钮

时间:2015-01-14 20:23:47

标签: ios swift uiview uiviewcontroller

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

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

我不认为传递一个带有segue的“mainVC”会成功:没有必要制作一个segue,因为两个视图显示在同一个屏幕上。

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

非常感谢你的时间

1 个答案:

答案 0 :(得分:5)

有不同的解决方案:

  1. ContainerViewController parentViewController(= UIViewController)
  2. 上调用方法
  3. 使用响应者链:
    • canBecomeFirstResponder()(子类)中实施UIViewController以返回YES
    • 在父视图控制器
    • 中实现buttonPressed(sender:AnyObject)(或其他)方法
    • 从容器视图控制器
    • 中调用UIApplication.sharedApplication().sendAction("buttonPressed:", to: nil, from:self)
  4. 这将允许方法“旅行”#34;响应者链直到找到实现buttonPressed()方法的对象。如果要在其他视图控制器中重用标头视图,此解决方案非常有用。

    1. 使用委托模式。在容器视图控制器中创建委托属性+协议,并让父vc在prepareForSegue()方法中将其自身设置为委托,该方法触发embed-segue。这也得到了重复使用的印章。

    2. 如果您使用的是故事板,那么您也可以使用Unwind Segue