ContainerView 添加出口
ContainerView add outlet
我有一个 ViewController
,其中一个 Container View
嵌入了 TableViewController
。
现在我想访问 ViewController
中的 TableView
,我该如何为它创建一个出口?
我尝试将容器视图添加为出口,但我无法访问嵌入式 TableViewController
。
在子视图控制器中创建出口并使用 self.childViewControllers.lastObject 访问它(假设您只有一个子视图,否则使用 objectAtIndex:)
你不能直接创建一个 outlet,因为 table 视图在不同的场景(视图控制器)中,但是你可以访问 table 视图,一旦你有对 UITableViewController
实例。有几种不同的方法可以做到这一点。
首先,您可以使用 UIViewController
子类的 childViewControllers
属性。如果你知道只有一个 child 那么你可以直接访问它,否则你需要确定哪个是正确的 child,比如通过遍历数组。
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
}
}
就我个人而言,我更喜欢第二种方法,因为我认为它是 'cleaner'
我有一个 ViewController
,其中一个 Container View
嵌入了 TableViewController
。
现在我想访问 ViewController
中的 TableView
,我该如何为它创建一个出口?
我尝试将容器视图添加为出口,但我无法访问嵌入式 TableViewController
。
在子视图控制器中创建出口并使用 self.childViewControllers.lastObject 访问它(假设您只有一个子视图,否则使用 objectAtIndex:)
你不能直接创建一个 outlet,因为 table 视图在不同的场景(视图控制器)中,但是你可以访问 table 视图,一旦你有对 UITableViewController
实例。有几种不同的方法可以做到这一点。
首先,您可以使用 UIViewController
子类的 childViewControllers
属性。如果你知道只有一个 child 那么你可以直接访问它,否则你需要确定哪个是正确的 child,比如通过遍历数组。
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
}
}
就我个人而言,我更喜欢第二种方法,因为我认为它是 'cleaner'