ViewContainer 中 ViewController 上的条形按钮操作

Posted

技术标签:

【中文标题】ViewContainer 中 ViewController 上的条形按钮操作【英文标题】:Bar button action on ViewController in ViewContainer 【发布时间】:2016-10-18 23:20:12 【问题描述】:

我有一个嵌入在带有导航栏的 ViewController 中的容器。 ContainerView 包含另一个带有一些文本字段的 ViewController。

当 ContainerView 首次显示时,文本字段被禁用。

我想做的是向导航栏添加一个编辑按钮,以启用文本字段。

基本上,视图控制器中的条形按钮项是否可以在容器中显示的另一个视图控制器上执行操作?

【问题讨论】:

【参考方案1】:

在这种情况下你可以做一个小技巧

条形按钮将在 ViewController 中,但我们可以将 ContainerView 的内容存储在第一个 ViewController 中的变量中

为此,我建议让 ContainerView 的内容有一个自定义类,这样你就可以在其中编写一个函数

这是一个关于如何捕获 ContainerView 内容的示例

class ViewController: UIViewController
    weak var containter: ContainerViewController!

    @IBAction func menuAction(_ sender: UIBarButtonItem) 
        //do what you want containter.doAction()
   

    override func prepare(for segue: UIStoryboardSegue, sender: Any?)
      if let vc = segue.destination as? ContainerViewController 
         self.containter = vc
      
   

【讨论】:

谢谢 Zombie,正如您发布的那样,我刚刚想出了另一种方法。但我更喜欢你的方式。【参考方案2】:

总是如此。我一直在寻找几个小时的答案,只要我问我就知道了。

我不确定这是最好的方法,但我只是通过编辑按钮制作了一个编辑布尔控制器。然后使用:

    var child = self.childViewControllers[0]
    child.viewWillAppear(false)

这会重新加载数据,如果它处于编辑模式,则启用文本字段。工作正常!

【讨论】:

以上是关于ViewContainer 中 ViewController 上的条形按钮操作的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式 ViewContainer 中的手势识别器未命中

Swift 3:UISwipeGestureRecognizer 适用于 View 但不适用于 ViewContainer

ABAP中定义一个webdynpro,已做好layout,如何用ALV方式查询数据?请教详细步骤!如哪定义ALV。

如何将组件动态添加到服务中的另一个组件

如何从导航栏中删除阴影线?

taro/微信小程序 ScrollView 实现下拉加载