【问题标题】:ContainerView add outletContainerView 添加出口
【发布时间】:2015-12-03 22:00:12
【问题描述】:

我有一个 ViewController 和一个嵌入了 TableViewControllerContainer 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:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-27
      • 2015-12-09
      • 2017-08-03
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多