我有一个基本的View Controller,里面有各种容器。我使用它们来控制进程的当前步骤,并且一次只能看到其中一个步骤。我为这些步骤创建了一个枚举,并使用它的Int rawValue来按标签访问每个步骤对应的容器,从而更改其可见性。
但在某些方面,我必须将一些信息传递给一个或多个步进控制器。我正在考虑使用相同的枚举方法来访问childViewControllers数组中相应View Controller的位置来执行此操作。
问题是,我没有在文档中找到任何确保childViewControllers数组始终处于相同顺序的内容,因此我可以使用这种方法。
有谁知道它或有更好的方法来实现类似的东西?
也许最好手动保持订单,例如通过创建Array
变量,该变量将按照您需要的顺序填充容器/控制器的引用。
只需将所有容器视图连接到插座集合,然后隐藏或取消隐藏它的某些元素即可
@IBOutlet var containers: [UIView]!
containers[0].isHidden = true
containers[1].isHidden = false
为了保持控制器的顺序,只需创建数组变量并用控制器的引用填充它。如果您正在使用segues,请附加嵌入segues的目的地。如果您要通过addChild(_:)
添加子控制器,只需添加您要添加的控制器
var controllers: [UIViewController]
如果您通过IBOutlet
s连接容器视图,并且想要使用“有序”数组跟踪它们,则可以执行以下操作:
class ContainersViewController: UIViewController {
@IBOutlet var containerA: UIView!
@IBOutlet var containerB: UIView!
@IBOutlet var containerC: UIView!
var orderedContainers = [UIView]()
override func viewDidLoad() {
super.viewDidLoad()
orderedContainers = [containerA, containerB, containerC]
}
}
从那里开始,您可以使用索引,如:
orderdContainers[1].isHidden = true