如何在不声明的情况下保留 [x] 个 viewController 的引用
How to retain the reference of [x]-number of viewControllers without declaration
我有一个 mainViewController,我想在其中显示未定义数量的 childViewController 的小网格结构。 childViewControllers 是根据数据创建的,因此我无法提前知道它们的数量。看来,我只能与f.ex互动。 childViewController 中的按钮,如果它由 mainViewController 保留(f.ex。在声明的变量中) - 所以我的问题是,如何保留 mainViewController 和 [x] 数量的 childViewController 之间的引用而不声明它们作为个体变量?
我已经尝试在 childController 上创建父变量并将其设置到 mainViewController,但这并不能解决问题 - (childViewController 中的按钮只有在我单独声明每个 childController 时才可用..)我尝试创建一个 childController 数组并将它们添加到 mainViewController 中,但这也不起作用。
我不希望使用 collectionView,因为会涉及到很多自定义和动画,那么保留这些 childViewController 的正确方法是什么?
如果我正确理解你的问题:
UIViewController 有一个 属性 childViewControllers
这是一个数组。
您可以阅读 https://developer.apple.com/documentation/uikit/uiviewcontroller 的 实现容器视图控制器 部分以了解如何正确添加子视图控制器。
然后你可以只使用数组下标来获得 [x] 个子视图控制器,如下所示:
myContainerViewController.childViewControllers[x].whateverButton ...
// or
let childX = myContainerViewController.childViewControllers[x]
childX.doSomething()
父视图控制器中的 childViewControllers
数组将保留子视图控制器。
编辑:
如果您需要访问子类的属性,那么您必须将 UIViewController 向下转换为您的子类 swift4 link, should be the same for swift3
你这样郁闷:
if let child = mycontainerVC.childViewControllers[x] as? MySubclassOfUIViewController {
child.subclassProperty = 1 // or whatever
}
我有一个 mainViewController,我想在其中显示未定义数量的 childViewController 的小网格结构。 childViewControllers 是根据数据创建的,因此我无法提前知道它们的数量。看来,我只能与f.ex互动。 childViewController 中的按钮,如果它由 mainViewController 保留(f.ex。在声明的变量中) - 所以我的问题是,如何保留 mainViewController 和 [x] 数量的 childViewController 之间的引用而不声明它们作为个体变量?
我已经尝试在 childController 上创建父变量并将其设置到 mainViewController,但这并不能解决问题 - (childViewController 中的按钮只有在我单独声明每个 childController 时才可用..)我尝试创建一个 childController 数组并将它们添加到 mainViewController 中,但这也不起作用。
我不希望使用 collectionView,因为会涉及到很多自定义和动画,那么保留这些 childViewController 的正确方法是什么?
如果我正确理解你的问题:
UIViewController 有一个 属性 childViewControllers
这是一个数组。
您可以阅读 https://developer.apple.com/documentation/uikit/uiviewcontroller 的 实现容器视图控制器 部分以了解如何正确添加子视图控制器。
然后你可以只使用数组下标来获得 [x] 个子视图控制器,如下所示:
myContainerViewController.childViewControllers[x].whateverButton ...
// or
let childX = myContainerViewController.childViewControllers[x]
childX.doSomething()
父视图控制器中的 childViewControllers
数组将保留子视图控制器。
编辑:
如果您需要访问子类的属性,那么您必须将 UIViewController 向下转换为您的子类 swift4 link, should be the same for swift3
你这样郁闷:
if let child = mycontainerVC.childViewControllers[x] as? MySubclassOfUIViewController {
child.subclassProperty = 1 // or whatever
}