我有一个根VC,它通过带有segue的容器视图嵌入表视图。这样就可以同时看到根VC和子VC。
if segue.identifier == "TableSegue" {
let toView = segue.destinationViewController as! TableViewController
toView.delegate = self
}
如何在根vc和子vc之间实现协议委托,因为子VC嵌入在根vc中?
我想要做的是在点击根VC中的按钮后,在子VC中触发一个函数。
我试图以正常方式实现协议委托,但似乎没有在子VC中获取
答案 0 :(得分:0)
protocol TableViewInterface {
func someWork()
}
class RootVC:UIViewController {
var delegate: TableViewInterface?
func callDelegate() {
delegate?.someWork()
}
}
class TableViewController: UITableViewController, TableViewInterface {
func someWork() {
//Perform your the work you want done or the action you want fired in your tableView here...
}
}
以上是swift中标准委托模式的示例。看起来您正在尝试在prepareForSegue()中设置委托,但IRRC不会使用containerView调用它。您可能希望通过容器视图获取对tableView的引用。
您应该可以通过在RootVC中执行类似操作来获取对它的引用
if let tableVC = childViewControllers[0] as? TableViewController {
self.tableViewController = tableVC
}
我希望这一切都有意义