我在ViewController中嵌入了一个带有导航栏的容器。 ContainerView包含另一个带有一些文本字段的ViewController。
首次显示ContainerView时,将禁用文本字段。
我想要做的是在导航栏中添加一个编辑按钮,启用文本字段。
基本上,视图控制器中的条形按钮项是否可以对容器中显示的另一个视图控制器执行操作?
答案 0 :(得分:1)
在这种情况下你可以做一个小技巧
bar按钮将在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
}
}
}
答案 1 :(得分:0)
总是如此。我一直想找出答案,我一直在找几个小时的答案。
我不确定它是最好的方法,但我只是通过编辑按钮创建了一个编辑bool控制器。然后使用:
var child = self.childViewControllers[0]
child.viewWillAppear(false)
这会重新加载数据,如果它处于编辑模式,则启用文本字段。工作正常!