iOS在ContainerView中访问PageViewController子项

时间:2016-05-10 00:22:09

标签: ios swift uiviewcontroller uipageviewcontroller uicontainerview

我有一个包含ContainerView的ViewController(让我们称之为MainViewController)。 ContainerView只包含一个子节点 - 一个PageViewController。 PageViewController页面通过4个不同的ViewControllers(让他们称之为Red,Blue,Green和Orange ViewControllers)。我如何从MainViewController访问各种颜色的子ViewControllers(每个包含一个UITableView,我想从MainActivity传递这些表视图的数据,这样我就不必进行单独的数据库调用从每个彩色页面获取数据)?

注意:我知道如何使用此方法访问ContainerView中的ViewController:Access Container View Controller from Parent iOS。但这只会让我进入PageViewController - 我需要更深入一点。 Swift的答案将不胜感激。

这是一个截图来说明。 enter image description here

作为后续内容,我如何从4个有色的" grand-children"中访问MainViewController? ViewControllers(正确的术语?)?

2 个答案:

答案 0 :(得分:3)

正如之前的回答所指出的,这是查看孩子的有效方式:

if let myViewControllers = myPageViewController.viewControllers as? [UIViewController] {
    for viewController in myViewControllers {
        // Do something with the viewController
    }
}

但它只会显示当前正在查看的一个孩子。如果您想要访问所有子ViewControllers,包括那些不可见的孩子,当您实例化并将其添加到ContainerView / PageViewController时,请保存对它们的引用。然后,您可以使用该引用访问每个子ViewController内的任何函数/数据。

答案 1 :(得分:0)

UIPageViewController上,您有一个名为viewControllers的媒体资源。它会为您The view controllers displayed by the page view controller.。它是一个数组,因为UIPageViewController可以同时显示多个页面。但是,如果您同时只有一个页面,则该数组将仅包含此页面。

以下是一个例子:

if let myViewControllers = myPageViewController.viewControllers as? [UIViewController] {
    for viewController in myViewControllers {
        // Do something with the viewController
    }
}