Swift - 如何删除函数中创建的按钮?

时间:2017-08-05 20:53:57

标签: ios xcode button removechild

我创建了一个检查特定条件的简单函数。如果是这种情况,则调用另一个以编程方式创建按钮的函数,该函数随机显示图像(加上其他内容)。

在创建按钮之前,我想检查按钮是否已经存在并将其删除,以便创建一个新的随机按钮。 另一个用例可能是检查第一个函数,如果按钮已经存在并且只是删除它。

无论我做什么Xcode说我在声明之前尝试使用变量(这是合乎逻辑的,但我不知道如何更改它)。

func check() {
    if condition is met {
        createButton()
    }
}

funk createButton()
    let number = arc4random_uniform(3)

        let multiButton = SKSpriteNode(imageNamed: "multi\(number)")
        multiButton.size = CGSize(width: frame.size.width / 5, height: frame.size.width / 5)
        multiButton.position = CGPoint(x: frame.midX, y: frame.minY + colorSwitch.size.height)
        multiButton.name = "multiButton"
        multiButton.isUserInteractionEnabled = false
        addChild(multiButton)
}

现在正如我写的那样,如果按钮已经存在,我想检查第一个函数createButton(),如果是这样,只需删除它,或者在创建按钮之前在第二个函数中删除它,如果它已经存在并再次删除它这样就可以创建一个新的。

我试图使用:

multiButton.removeFromParent()

但这不起作用,因为我尝试在创建变量之前访问该变量。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

向您的班级添加button(或您想要调用的任何内容)属性。创建按钮时,将其分配给属性,下次需要创建按钮时,首先调用button.removeFromSuperview(),然后重新分配新按钮。

为什么不只是拥有一个只指向按钮的单个实例的属性,而不是删除和创建按钮,只需更改按钮的标题,操作和/或其他按钮属性。