2017-02-23 95 views
0

我有一個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 

} 

回答

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

謝謝,那就是了。在隱藏菜單選項 – idlehand

+0

方面,使用.isHidden還是將其從超級視圖中移除會更有意義。這需要更少的上下文來回答。但作爲一個簡短的答案「isHidden」在這裏很適合你。 – Tushar

1

的「menuView」的兩個功能是不是一個對象,就不要使用「讓」。 順便說一下,如果您將來再次顯示menuView,請使用「isHidden」,如果您不再使用它,請使用「removeFromSuperView」釋放您的內存。