2017-12-05 2 views
1

Ich versuche, eine anklickbare UILabel über diesen Code zu machen:Wie kann ich ein anklickbares UILabel in Swift 3 erstellen?

class ViewNotificationsDetails: UIViewController {  
    @IBOutlet weak var back: UILabel! 

     override func viewDidLoad() { 
      super.viewDidLoad() 

      let tap = UITapGestureRecognizer(target: self, action: #selector(ViewNotificationsDetails.tapFunction)) 
      back.isUserInteractionEnabled = true 
      back.addGestureRecognizer(tap) 
     } 

     @objc func tapFunction(sender:UITapGestureRecognizer) { 
      print("tap working") 
     } 
} 

Aber wenn die Ausführung von Code, erhalte ich den Fehler ->

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value on the line "back.isUserInteractionEnabled = true".

Was könnte das Problem sein?

+1

Ist Ihr Label korrekt an das Label angeschlossen? – CZ54

+1

Sind Sie sicher, dass Sie die Steckdose im Interface Builder angeschlossen haben? – Andrea

+0

Das war das Problem. Jetzt funktioniert es einwandfrei Ich war mir sicher, dass mein Etikett korrekt mit dem Etikett verbunden war. Danke –

Antwort

0

Problem ist mit Ihrer Etikettenspeicherzuordnung. Sie haben IBOutlet Label erstellt, aber nicht mit Interface von Ihrem Storyboard/XIB View Controller verbunden.

Go to your Interface Builder: (Storyboard/XIB) View Controller ▶ Select 'Connection Inspector' ▶ Connect label outlet 'back' with Label interface element

enter image description here

+0

Danke für die Beantwortung. Ich dachte, die Verbindung sei gut gemacht, aber ich musste sie löschen, ohne es zu wollen, und das war das Problem. Ich habe das gerade gemacht und ein Problem funktioniert. Danke –

0

Verwenden Sie back.userInteractionEnabled = true Sie haben falsch wie IsUserInteractionEnabled getan.

+0

Als ich das schrieb, erhielt ich einen Fehler. Das Problem ist, dass der UILAbel nicht korrekt mit dem Etikett verbunden war. Vielen Dank. –

+0

verwenden Sie Storyboard? –

+1

verbinden wie oben Bild von @ Krunals Antwort –

0

diesen Code versuchen, arbeitet gut mit mir

class ViewController: UIViewController { 
@IBOutlet weak var cliclableLable: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction)) 
    cliclableLable.isUserInteractionEnabled = true 
    cliclableLable.addGestureRecognizer(tap) 
} 

func tapFunction(sender:UITapGestureRecognizer) { 
    print("tap working") 
} 

}

auch nicht vergessen, Ihr Etikett mit dem Code zu verknüpfen

Verwandte Themen