2017-09-27 2 views
0

Entfernen Während Unschärfe-Effekt Hinzufügen geben Fehler SubView:gefunden unerwartet null, während ein optionaler Wert auszupacken, während Blur Hintergrund

unexpectedly found nil while unwrapping an Optional value

Zum ersten Mal ist es funktioniert gut, wenn ich zweites Mal seine Angabe über Fehler versuchen.

Stellen:

@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

Auf welcher Linie tritt der Fehler auf? – Moritz

+0

blurEffectView.addSubview (mesgText_view) hier bekomme ich Absturz – kishore

+1

Wir wissen nicht viel über 'mesgText_view' - wo es erstellt wurde und wurde initialisiert oder nicht – SwiftStudier

Antwort

1
self.blurEffectView.removeFromSuperview() 

Ich denke, werde, dass diese und/oder mesgText_view zu einem Ausgang bezieht, erklärt so schwach wie folgt aus:

@IBOutlet weak var blurEffectView: UIVisualEffectView! 

Schwache Variablen werden auf Null gesetzt, wenn sich nichts auf sie bezieht. Wenn Sie eine schwach gehaltene Ansicht aus der Superansicht entfernen, wird sie auf Null gesetzt, und beim nächsten Versuch, auf sie zu verweisen, stürzt Ihre App ab.

Wenn Ihr Code das erste Mal ausgeführt wird, werden einige schwache Ausgänge aus der Übersicht entfernt. Da es eine schwache Eigenschaft ist, hat nichts anderes einen Bezug darauf und es wird zu Null gemacht. Das zweite Mal, wenn Ihr Code ausgeführt wird, greift er auf die Steckdose zu, die jetzt implizit als Option nicht ausgepackt ist und Ihren Absturz verursacht.

Sie können die Steckdose auch zu einer starken Referenz machen, indem Sie das Schlüsselwort weak aus der Deklaration entfernen. Dies würde es Ihnen ermöglichen, es aus seiner Superansicht zu entfernen, ohne dass es gelöscht wird.

+0

zunächst einmal vielen Dank für – kishore

+0

Antwort zu geben i alpha = 0 in einer func und alpha = 1 in einer anderen Funktion – kishore

+0

var blurEffect = UIBlurEffect (style: UIBlurEffectStyle.light) gesetzt hat blurEffectView = UIVisualEffectView (Effekt: blurEffect) blurEffectView. frame = view.bounds blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] view.addSubview (blurEffectView) blurEffectView.addSubview (mesgText_view) – kishore

Verwandte Themen