代码之家  ›  专栏  ›  技术社区  ›  RjC

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

  •  0
  • RjC  · 技术社区  · 8 年前

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

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

    无论我做什么,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 回复  |  直到 8 年前
        1
  •  0
  •   NRitH    8 年前

    添加 button button.removeFromSuperview() ,然后为其重新分配一个新按钮。

    解决它,但它不能解决 为什么? 你这样做。为什么不让一个属性只指向按钮的一个实例,而不是删除和创建按钮,只需更改按钮的标题、动作和/或其他按钮属性。