childViewControllers 数组在具有各种容器的视图控制器中是否具有特定顺序?
Does childViewControllers array have a specific order in a view controller with various containers?
我有一个基本视图控制器,里面有各种容器。我用它们来控制进程的当前步骤,一次只能看到其中一个。
我为步骤创建了一个枚举,并使用它的 Int rawValue 通过标记访问与每个步骤对应的容器,更改其可见性。
但在某些时候我必须将一些信息传递给一个或多个步进控制器。我正在考虑使用相同的枚举方法来访问 childViewControllers 数组中相应视图控制器的位置。
问题是,我没有在文档中找到任何东西来确保 childViewControllers 数组始终处于相同的顺序,所以我可以使用这种方法。
有没有人知道或者有更好的方法来实现类似的东西?
是的,已下单
let v = Vvv()
self.addChild(v)
let d = Ddd()
self.addChild(d)
print(self.children)
[dfjkfjdjdjdfjfdkas.Vvv: 0x1041086e0,dfjkfjdjdjdfjfdkas.Ddd: 0x104012060]
class Vvv:UIViewController {
}
class Ddd:UIViewController {
}
也许手动保持顺序会更好,例如通过创建 Array
变量,该变量将按照您需要的顺序填充 containers/controllers 的引用。
只需将所有容器视图连接到 outlet 集合并隐藏或取消隐藏它的某些元素
@IBOutlet var containers: [UIView]!
containers[0].isHidden = true
containers[1].isHidden = false
为了保持控制器的顺序,只需创建数组变量并用控制器的引用填充它。如果您正在使用 segues,请附加嵌入 segues 的目的地。如果您通过 addChild(_:)
添加子控制器,只需附加您正在添加的控制器
var controllers: [UIViewController]
如果您的容器视图通过 IBOutlet
s 连接,并且您想使用 "ordered" 数组跟踪它们,您可以这样做:
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
我有一个基本视图控制器,里面有各种容器。我用它们来控制进程的当前步骤,一次只能看到其中一个。 我为步骤创建了一个枚举,并使用它的 Int rawValue 通过标记访问与每个步骤对应的容器,更改其可见性。
但在某些时候我必须将一些信息传递给一个或多个步进控制器。我正在考虑使用相同的枚举方法来访问 childViewControllers 数组中相应视图控制器的位置。
问题是,我没有在文档中找到任何东西来确保 childViewControllers 数组始终处于相同的顺序,所以我可以使用这种方法。
有没有人知道或者有更好的方法来实现类似的东西?
是的,已下单
let v = Vvv()
self.addChild(v)
let d = Ddd()
self.addChild(d)
print(self.children)
[dfjkfjdjdjdfjfdkas.Vvv: 0x1041086e0,dfjkfjdjdjdfjfdkas.Ddd: 0x104012060]
class Vvv:UIViewController {
}
class Ddd:UIViewController {
}
也许手动保持顺序会更好,例如通过创建 Array
变量,该变量将按照您需要的顺序填充 containers/controllers 的引用。
只需将所有容器视图连接到 outlet 集合并隐藏或取消隐藏它的某些元素
@IBOutlet var containers: [UIView]!
containers[0].isHidden = true
containers[1].isHidden = false
为了保持控制器的顺序,只需创建数组变量并用控制器的引用填充它。如果您正在使用 segues,请附加嵌入 segues 的目的地。如果您通过 addChild(_:)
添加子控制器,只需附加您正在添加的控制器
var controllers: [UIViewController]
如果您的容器视图通过 IBOutlet
s 连接,并且您想使用 "ordered" 数组跟踪它们,您可以这样做:
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