我的ViewController
Container View
有嵌入式TableViewController
。
现在我想访问TableView
中的ViewController
,我该怎么做出来?
我尝试将容器视图添加为插座,但我无法访问嵌入式TableViewController
。
答案 0 :(得分:15)
您无法直接创建插座,因为表视图位于不同的场景(视图控制器)中,但是一旦您引用了UITableViewController
实例,就可以访问tableview。有几种不同的方法可以做到这一点。
首先,您可以使用childViewControllers
子类的UIViewController
属性。如果你知道只有一个孩子,那么你可以直接访问它,否则你需要确定哪个是正确的孩子,比如循环遍历数组。
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
}
}
就个人而言,我更喜欢第二种方法,因为我觉得它更“清洁”
答案 1 :(得分:1)
在子视图控制器中创建插座并使用self.childViewControllers.lastObject访问它(假设您只有一个子节点,否则使用objectAtIndex:)