我有一个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
}
答案 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”释放您的记忆。