swift 访问容器按钮
swift access container button
我对 Swift 比较陌生。这是我的问题:
我有一个 UIViewController,里面有一个容器。容器有自己的 ContainerViewController。容器是应用程序的 header,其中有一个按钮。
我想根据按钮(容器内)是否被按下来设置 UIViewController 内的 Bool 值。
我不认为将 "mainVC" 与 segue 一起传递会成功:没有必要进行 segue,因为两个视图显示在同一屏幕上。
我是否应该为视图及其容器提供相同的 ViewControllerClass?
非常感谢您的宝贵时间
有不同的解决方案:
- 调用
ContainerViewController
的 parentViewController
(=UIViewController) 的方法
- 使用响应链:
- 在
UIViewController
(子类)中实现 canBecomeFirstResponder()
到 return YES
- 在 parent 视图控制器中实现一个
buttonPressed(sender:AnyObject)
(或其他)方法
- 从容器视图控制器中调用
UIApplication.sharedApplication().sendAction("buttonPressed:", to: nil, from:self)
这将允许该方法 "travel" 向上响应链,直到找到实现 buttonPressed()
方法的 object。如果您想在其他视图控制器中重用 header 视图,此解决方案会很有用。
使用委托模式。在容器视图控制器中创建委托 属性 + 协议,并让 parent vc 在 embed-segue 触发的 prepareForSegue() 方法中将自己设置为委托。这也获得了可重复使用的标记。
如果您正在使用故事板,那么您还可以使用 Unwind Segue
我对 Swift 比较陌生。这是我的问题: 我有一个 UIViewController,里面有一个容器。容器有自己的 ContainerViewController。容器是应用程序的 header,其中有一个按钮。
我想根据按钮(容器内)是否被按下来设置 UIViewController 内的 Bool 值。
我不认为将 "mainVC" 与 segue 一起传递会成功:没有必要进行 segue,因为两个视图显示在同一屏幕上。
我是否应该为视图及其容器提供相同的 ViewControllerClass?
非常感谢您的宝贵时间
有不同的解决方案:
- 调用
ContainerViewController
的parentViewController
(=UIViewController) 的方法
- 使用响应链:
- 在
UIViewController
(子类)中实现canBecomeFirstResponder()
到 return YES - 在 parent 视图控制器中实现一个
buttonPressed(sender:AnyObject)
(或其他)方法 - 从容器视图控制器中调用
UIApplication.sharedApplication().sendAction("buttonPressed:", to: nil, from:self)
- 在
这将允许该方法 "travel" 向上响应链,直到找到实现 buttonPressed()
方法的 object。如果您想在其他视图控制器中重用 header 视图,此解决方案会很有用。
使用委托模式。在容器视图控制器中创建委托 属性 + 协议,并让 parent vc 在 embed-segue 触发的 prepareForSegue() 方法中将自己设置为委托。这也获得了可重复使用的标记。
如果您正在使用故事板,那么您还可以使用 Unwind Segue