我如何保证 addChild(x) 没有被添加两次?

How do I safeguard that addChild(x) isn't added twice?

我一直 运行 遇到一个问题,其中 addChild(myLabel) 被触发了两次,导致崩溃。如果已经添加了 label,有没有办法保证 addChild(myLabel) 不会被触发?

我一直在寻找 bool,类似 myLabel.isAddedToView 的东西,但我认为没有。我也试过

guard let test = addChild(myLabel) else {print("error") return}

但这给了我错误

Initializer for conditional binding must have Optional type, not Void'

如何在布尔值中跟踪它,例如

var isChildAdded = false

if !isChildAdded {
    addChild(myLabel)
    isChildAdded = true
}

如果你指的是这个函数的用法addChild(_ childController: UIViewController) 那么我建议通过

检查

if !controller.children.contains(controller1) { // your actions }

否则如果是addSubview(_ view: UIView)那么

if !view1.subviews.contains(view2) { //your actions }