如何确保 addChild(x) 不会添加两次?



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

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

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

但这给了我错误

条件绑定的初始值设定项必须具有可选类型,而不是 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 }

最新更新