我有一个包含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的答案将不胜感激。
作为后续内容,我如何从4个有色的" grand-children"中访问MainViewController? ViewControllers(正确的术语?)?
答案 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
}
}