2016-08-24 6 views
0

Я сделал subview, появившийся в приложении iOS, когда нажата кнопка. Затем я вызываю пользовательский UIView из своего класса, menuView и показываю, что UIView на моей основной раскадровкеПочему мой SurperView не отвечает, когда я удаляю UIView SubView?

МенюView отлично отображается на моей основной раскадровке, но после удаления подвью я получил SuperView (исходный вид для основного класса для главный контроллер представления) не отвечает, и я не могу ни с чем взаимодействовать.

Что случилось?

My Custom "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() 
} 

} 

Главная View Controller Класс:

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 вы удаляете только этот внутренний (xib) вид внутри myMenuView, а не myMenuView. Таким образом myMenuView остается на экране и проглатывает все штрихи.

 Смежные вопросы

  • Нет связанных вопросов^_^