【问题标题】:ContainerView add outletContainerView 添加出口
【发布时间】:2015-12-03 22:00:12
【问题描述】:
我有一个 ViewController 和一个嵌入了 TableViewController 的 Container View。
现在我想访问ViewController 中的TableView,我该如何为此创建一个出口?
我尝试将容器视图添加为插座,但我无法访问嵌入的TableViewController。
【问题讨论】:
标签:
ios
swift
uitableview
uicontainerview
【解决方案1】:
您不能直接创建插座,因为表格视图位于不同的场景(视图控制器)中,但是一旦您引用了 UITableViewController 实例,您就可以访问表格视图。有几种不同的方法可以做到这一点。
首先,您可以使用UIViewController 子类的childViewControllers 属性。如果您知道只有一个孩子,那么您可以直接访问它,否则您需要确定哪个是正确的孩子,比如循环遍历数组。
let myTableViewController = self.childViewControllers[0] as! UITableViewController
let theTableView = myTableViewController.tableView
第二个选项是在嵌入转场期间访问UITableViewController。如果您单击故事板中的嵌入转场,您可以像任何其他转场一样为其提供标识符。然后就可以实现prepareForSegue,并抓取嵌入的UITableViewController实例——
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "tableviewEmbed") {
let myTableViewController = segue.destinationViewController as! UITableViewController
let theTableView = myTableViewController.tableView
}
}
就我个人而言,我更喜欢第二种方法,因为我认为它“更干净”
【解决方案2】:
在子 View Controller 中创建 outlet 并使用 self.childViewControllers.lastObject 访问它(假设你只有一个孩子,否则使用 objectAtIndex:)