我有一个带有Container View的ViewController,它有一个嵌入式TableViewController.
现在我想访问ViewController中的TableView,我该如何为它做出一个出口?
我尝试将Container View添加为插座,但我无法访问嵌入式TableViewController.
解决方法
您无法直接创建插座,因为表视图位于不同的场景(视图控制器)中,但是一旦您有对UITableViewController实例的引用,就可以访问tableview.有几种不同的方法可以做到这一点.
首先,您可以使用UIViewController子类的childViewControllers属性.如果你知道只有一个孩子,那么你可以直接访问它,否则你需要确定哪个是正确的孩子,比如循环遍历数组.
let myTableViewController = self.childViewControllers[0] as! UITableViewController let theTableView = myTableViewController.tableView
第二个选项是在嵌入segue期间访问UITableViewController.如果您单击故事板中的嵌入segue,您可以为其提供与任何其他segue一样的标识符.然后你可以实现prepareForSegue并获取嵌入式UITableViewController实例 –
override func prepareForSegue(segue: UIStoryboardSegue!,sender: AnyObject!) { if (segue.identifier == "tableviewEmbed") { let myTableViewController = segue.destinationViewController as! UITableViewController let theTableView = myTableViewController.tableView } }
就个人而言,我更喜欢第二种方法,因为我认为它更“清洁”