2017-09-27 50 views
0

虽然增加模糊效果子视图给错误:意外地发现零而展开的可选值,同时去除模糊背景

unexpectedly found nil while unwrapping an Optional value

对于第一次工作正常,如果我尝试第二次的给上面的错误。

网点:

@IBOutlet var mesgText_view: UIView! 
var blurEffectView: UIVisualEffectView! 

CODE:

func OpenSubMesgView(_ sender : UIButton) { 
    print(sender.tag) 
    print("ARRAY VALUES FROM CELL",totlObservationArray.object(at: sender.tag)) 
    mesgText_view.alpha = 1 
    var blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light) 
    blurEffectView = UIVisualEffectView(effect: blurEffect) 
    blurEffectView.frame = view.bounds 
    blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
    view.addSubview(blurEffectView) 
    blurEffectView.addSubview(mesgText_view)  
} 

@IBAction func closeMesgview(_ sender:UIButton) { 
     mesgText_view.alpha = 0; 
     self.blurEffectView.removeFromSuperview() 
} 
+1

错误发生在哪条线上? – Moritz

+0

blurEffectView.addSubview(mesgText_view)在这里我崩溃了 – kishore

+1

我们不太了解'mesgText_view' - 它是在哪里创建的,它是在什么地方初始化的或者不是 – SwiftStudier

回答

1
self.blurEffectView.removeFromSuperview() 

我要去猜测,这和/或mesgText_view指的是出口,声明为弱这样的:

@IBOutlet weak var blurEffectView: UIVisualEffectView! 

如果没有任何对它们的强引用,弱变量将设置为零。如果您从其超级视图中移除弱视图,它将被设置为零,并且下次尝试引用它时,您的应用程序将崩溃。

第一次运行代码时,它将从其超级视图中删除一些弱点。由于这是一个薄弱的财产,没有别的可以参考它,它是零。第二次你的代码运行时,它会访问出口,它现在是一个零隐含解包可选,导致你的崩溃。

您还可以通过从声明中删除weak关键字来使插座成为强有力的参考。这将允许你从它的超级视图中删除它,而不会被删除。

+0

首先感谢您对其他功能 – kishore

+0

我没有设定的α= 0的一个FUNC和α= 1(样式:UIBlurEffectStyle.light) blurEffectView = UIVisualEffectView(效果:blurEffect) blurEffectView。帧= view.bounds blurEffectView.autoresizingMask = [.flexibleWidth,.flexibleHeight] view.addSubview(blurEffectView) blurEffectView.addSubview(mesgText_view) – kishore

+0

VAR blurEffect = UIBlurEffect给出答案 – kishore

相关问题