2016-08-24 6 views
0

ボタンを押すとiOSアプリにサブビューが表示されました。次に、そのクラスからカスタムUIViewを呼び出すと、私のメインストーリーボードにそのUIViewを表示しますUIViewサブビューを削除するとSurperViewが応答しないのはなぜですか?

私のメインストーリーボードにはmenuViewが表示されますが、一度サブビューを削除すると、メインビューコントローラ)が応答しなくなり、何かと対話できなくなります。

どういうところが間違っていますか?

マイカスタム "menuView" のUIViewクラス:

import UIKit 

@IBDesignable class menuView: UIView { 

var view:UIView! 

@IBOutlet weak var label: UILabel! 

func loadViewFromNib() -> UIView { 

    let bundle = NSBundle(forClass: self.dynamicType) 
    let nib = UINib(nibName: "menuView", bundle: bundle) 
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView 

    return view 
} 

func xibSetup() { 
    view = loadViewFromNib() 
    view.frame = bounds 
    view.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight] 

    addSubview(view) 
} 

override init(frame: CGRect) { 
    super.init(frame: frame) 

    xibSetup() 
} 

required init(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder)! 

    xibSetup() 
} 

} 

メインビューコントローラクラス:

var myMenuView:menuView! 

@IBOutlet weak var menuButtonOutlet: UIBarButtonItem! 
@IBAction func buttonPressed(sender: AnyObject) { 


    if menuButtonOutlet.title == "Menu" { 

    if (myMenuView != nil) { 
     self.myMenuView.view.removeFromSuperview() 
    } 

    self.myMenuView = menuView(frame: self.view.bounds) 

    self.myMenuView.alpha = 0.75 

    self.view.addSubview(myMenuView) 

     menuButtonOutlet.title = "Back" 

    } else { 

      self.myMenuView.view.removeFromSuperview() 

      menuButtonOutlet.title = "Menu" 

    } 

} 

答えて

0

短い答え:

self.myMenuView.view.removeFromSuperview() 

になるべき
self.myMenuView.removeFromSuperview() 

あなたはこの行がbuttonPressedにあります。

説明:

あなたmyMenuViewは、あなたがあなたのXIBからインスタンスビューを配置するコンテナです。 buttonPressedでは、myMenuView内のこの内部(xib)ビューのみを削除し、myMenuView自体は削除しません。したがって、myMenuViewは画面上に残り、すべてのタッチを嚥下します。

関連する問題