iOS 在 ContainerView 中访问 PageViewController 子级
iOS Accessing PageViewController children inside ContainerView
我有一个包含 ContainerView 的 ViewController(我们称之为 MainViewController)。 ContainerView 仅包含一个子项 - PageViewController。 PageViewController 页通过 4 个不同的 ViewControllers(我们称它们为红色、蓝色、绿色和橙色 ViewControllers)。我如何从 MainViewController 访问各种颜色的子 ViewController(每个都包含一个 UITableView,我想从 MainActivity 向下传递这些表视图的数据,这样我就不会必须进行单独的数据库调用才能从每个彩色页面获取数据)?
注意:我知道如何使用以下方法访问 ContainerView 中的 ViewController:Access Container View Controller from Parent iOS。但这只会让我到达 PageViewController - 我需要比这更深入。 Swift 中的答案将不胜感激。
这里有一张截图来说明。
作为后续,我如何从 4 个彩色 "grand-children" ViewController 访问 MainViewController(正确的术语?)?
在 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
}
}
正如之前的回答所指出的,这是查看 children 的有效方式:
if let myViewControllers = myPageViewController.viewControllers as? [UIViewController] {
for viewController in myViewControllers {
// Do something with the viewController
}
}
但它只会显示当前可见的 child。如果要访问所有 child ViewControllers
,包括那些不可见的,当您实例化并将它们添加到 ContainerView
/PageViewController
时,保存引用给他们。然后,您可以使用该引用访问每个 child ViewController
.
中的任何 function/data
我有一个包含 ContainerView 的 ViewController(我们称之为 MainViewController)。 ContainerView 仅包含一个子项 - PageViewController。 PageViewController 页通过 4 个不同的 ViewControllers(我们称它们为红色、蓝色、绿色和橙色 ViewControllers)。我如何从 MainViewController 访问各种颜色的子 ViewController(每个都包含一个 UITableView,我想从 MainActivity 向下传递这些表视图的数据,这样我就不会必须进行单独的数据库调用才能从每个彩色页面获取数据)?
注意:我知道如何使用以下方法访问 ContainerView 中的 ViewController:Access Container View Controller from Parent iOS。但这只会让我到达 PageViewController - 我需要比这更深入。 Swift 中的答案将不胜感激。
这里有一张截图来说明。
作为后续,我如何从 4 个彩色 "grand-children" ViewController 访问 MainViewController(正确的术语?)?
在 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
}
}
正如之前的回答所指出的,这是查看 children 的有效方式:
if let myViewControllers = myPageViewController.viewControllers as? [UIViewController] {
for viewController in myViewControllers {
// Do something with the viewController
}
}
但它只会显示当前可见的 child。如果要访问所有 child ViewControllers
,包括那些不可见的,当您实例化并将它们添加到 ContainerView
/PageViewController
时,保存引用给他们。然后,您可以使用该引用访问每个 child ViewController
.