ContainerView添加插座

时间:2015-09-08 09:26:52

标签: ios swift uitableview uicontainerview

我的ViewController Container View有嵌入式TableViewController

现在我想访问TableView中的ViewController,我该怎么做出来?

我尝试将容器视图添加为插座,但我无法访问嵌入式TableViewController

enter image description here

2 个答案:

答案 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:)