Swift如何创建从根VC到嵌入式VC的协议委托

时间:2015-09-12 22:37:02

标签: ios swift

我有一个根VC,它通过带有segue的容器视图嵌入表视图。这样就可以同时看到根VC和子VC。

 if segue.identifier == "TableSegue" {
            let toView = segue.destinationViewController as! TableViewController
            toView.delegate = self
        }

如何在根vc和子vc之间实现协议委托,因为子VC嵌入在根vc中?

我想要做的是在点击根VC中的按钮后,在子VC中触发一个函数。

我试图以正常方式实现协议委托,但似乎没有在子VC中获取

1 个答案:

答案 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
}

我希望这一切都有意义