从视图中删除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
}
答
的“menuView”的两个功能是不是一个对象,就不要使用“让”。 顺便说一下,如果您将来再次显示menuView,请使用“isHidden”,如果您不再使用它,请使用“removeFromSuperView”释放您的内存。
谢谢,那就是了。在隐藏菜单选项 – idlehand
方面,使用.isHidden还是将其从超级视图中移除会更有意义。这需要更少的上下文来回答。但作为一个简短的答案“isHidden”在这里很适合你。 – Tushar