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

时间:2019-09-06 12:56:26

标签: swift uilabel

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

我一直在寻找bool之类的myLabel.isAddedToView,但不认为有一个。我也尝试过

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

但这给了我错误

  

用于条件绑定的初始化程序必须具有Optional类型,而不是Void'

2 个答案:

答案 0 :(得分:2)

如何用布尔值来跟踪它,例如

var isChildAdded = false

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

答案 1 :(得分:0)

如果您是要使用此功能addChild(_ childController: UIViewController) 那我建议检查一下

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

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

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