2017-02-23 9 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

ありがとうございました。 .isHiddenを使用したり、スーパービューからメニューオプションを隠すという意味で、それを削除する方が理にかなっています – idlehand

+0

これは、回答するコンテキストがそれほど必要ありません。しかし、短い答え "isHidden"はここであなたに適しています。 – Tushar

1

「menuView」の二つの機能では、単に「せ」を使用していない、一つのオブジェクトではありません。 ところで、メニュービューをもう一度表示する場合は、 "isHidden"を使用してください。再度使用しない場合は、 "removeFromSuperView"を使用してメモリを解放してください。

関連する問題