从视图中删除UIView

时间:2017-02-23 03:25:42

标签: ios swift uiview swift3 uilabel

我有一个UIView和几个标签和按钮,它们构建在一个功能menuState中。当我单击menuState函数中的一个按钮时,它会将我们的函数带出menuPlayButtonClicked()函数。在这个函数中,我试图隐藏标签和我在menuState函数中构建的UIView,因为游戏正在开始。使用menuView.isHidden = true不会这样做。 menuView.removeFromSuperView()也没有这样做。我尝试使用let menuView = UIView()全局声明这些视图和标签,但它仍然没有删除它。我错过了什么?我仍然可以在游戏组件下方的背景中看到标签和UIView。

func menuState() {

//Build the menu box
    let menuView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 400))
    menuView.backgroundColor = UIColor(patternImage: UIImage(named: "background.png")!)
    self.view.addSubview(menuView)
    menuView.layer.zPosition = 1;
    menuView.layer.cornerRadius = 10
    menuView.isHidden = false

...

Also some code for a button here, which takes us to the setupGame function when clicked

}

2 个答案:

答案 0 :(得分:2)

全局声明的menuView对象与名为“menuState()”的函数内部创建的对象不同。因此,不要声明另一个本地实例,您可以尝试以下方式 -

menuState() {
  menuView = ...   // don't use `let` or 'var' again here, but reference the same global variable that you will use later to hide
}

答案 1 :(得分:1)

两个函数中的“menuView”不是一个对象,只是不要使用“let”。 顺便说一句,如果您将来再次显示menuView,请使用“isHidden”,如果您再也不会使用它,请使用“removeFromSuperView”释放您的记忆。