Ios 从父视图控制器调用子视图实例的函数
我有一个由motherViewController控制的motherView,其中包含一个容器视图。容器视图由childViewController控制。childView包含一个tableView 现在我在childViewController中有了一个cleanTableView函数,它在调用时“重置”tableViewIos 从父视图控制器调用子视图实例的函数,ios,swift,childviewcontroller,parentviewcontroller,Ios,Swift,Childviewcontroller,Parentviewcontroller,我有一个由motherViewController控制的motherView,其中包含一个容器视图。容器视图由childViewController控制。childView包含一个tableView 现在我在childViewController中有了一个cleanTableView函数,它在调用时“重置”tableView func clean() { let indexPath = IndexPath(row: 0, section: 0) if let cell = tab
func clean() {
let indexPath = IndexPath(row: 0, section: 0)
if let cell = tableView.cellForRow(at: indexPath) {
if cell.accessoryType == .checkmark {
cell.accessoryType = .none
}
}
}
在我的母亲视图中有一个按钮。当按下此按钮时,它将调用motherViewController上的操作
@IBAction func cancelButtonTapped(_ sender: UIBarButtonItem) {
//call clean method of containerView instance
}
如何在此操作中调用特定childView实例上的cleanTableView函数 假设只有一个子视图控制器:
@IBAction func cancelButtonTapped(_ sender: UIBarButtonItem) {
(children.first as? ChildViewController)?.clean()
}
有关API更改/重命名的一些附加信息:
在Swift 4.2中,childViewController
属性已重命名为children
。看
假设只有一个子视图控制器:
@IBAction func cancelButtonTapped(_ sender: UIBarButtonItem) {
(children.first as? ChildViewController)?.clean()
}
有关API更改/重命名的一些附加信息:
在Swift 4.2中,childViewController
属性已重命名为children
。看
根据组件的互连性以及您希望将它们绑定的紧密程度,有很多方法可以做到这一点。三个例子:
- 紧密绑定:“母”VC调用“子”VC上的方法,后者调用子视图上的方法
- 与委托的松散绑定:创建委托协议,通过此委托将子视图链接到母VC。然后,母VC调用代理
- 与通知断开连接:让子视图侦听特定的“清除”通知。让母公司VC发布通知。两者之间没有直接联系
每种方法的优缺点。最好的交互取决于您的具体情况。有很多方法可以做到这一点,这取决于组件的互连性以及您希望将它们绑定的紧密程度。三个例子:
- 紧密绑定:“母”VC调用“子”VC上的方法,后者调用子视图上的方法
- 与委托的松散绑定:创建委托协议,通过此委托将子视图链接到母VC。然后,母VC调用代理
- 与通知断开连接:让子视图侦听特定的“清除”通知。让母公司VC发布通知。两者之间没有直接联系
每种方法的优缺点。最佳交互取决于您的具体情况。您可以设置NSNotificationCenter观察者或同时声明协议。您可以设置NSNotificationCenter观察者或同时声明协议。
子项
是否为Swift 4.2?这听起来像是对基础类的改变,而不是对语言的改变。你能解释一下吗?iOS 12的变化是这样吗?@邓肯看起来确实是一个快速的4.2具体改变(检查附加屏幕截图)。这听起来像是对各种功能和属性的快速名称的基础改变。在Swift 2->Swift 3的转换中也有很多这样的变化。成功了!谢谢<代码>儿童是Swift 4.2吗?这听起来像是对基础类的改变,而不是对语言的改变。你能解释一下吗?iOS 12的变化是这样吗?@邓肯看起来确实是一个快速的4.2具体改变(检查附加屏幕截图)。这听起来像是对各种功能和属性的快速名称的基础改变。在Swift 2->Swift 3的转换中也有很多这样的变化。成功了!谢谢