从视图中删除UIView

问题描述:

我有一个UIView和几个标签和按钮,它们是内置在函数menuState中的。当我点击menuState函数中的一个按钮时,它将我们带出menuPlayButtonClicked()函数。在这个函数中,我试图隐藏我在menuState函数中建立的标签和UIView,因为游戏开始了。使用menuView.isHidden = true不是这样做的。 menuView.removeFromSuperView()也没有这样做。我试着用let menuView = UIView()声明全局声明这些视图和标签,但它仍然没有删除它。我错过了什么?我仍然可以在游戏组件下方的背景中看到标签和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 

} 

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 
} 
+0

谢谢,那就是了。在隐藏菜单选项 – idlehand

+0

方面,使用.isHidden还是将其从超级视图中移除会更有意义。这需要更少的上下文来回答。但作为一个简短的答案“isHidden”在这里很适合你。 – Tushar

的“menuView”的两个功能是不是一个对象,就不要使用“让”。 顺便说一下,如果您将来再次显示menuView,请使用“isHidden”,如果您不再使用它,请使用“removeFromSuperView”释放您的内存。