web-dev-qa-db-de.com

Verbindung von IBOutlet vom Storyboard zur UIView-Unterklasse nicht möglich

Ich kann mit der rechten Maustaste klicken und aus meiner benutzerdefinierten UIView-Unterklassendatei auf die Storyboard-Elemente ziehen, um sie zu verbinden, aber ich kann nicht umgekehrt. Ich glaube, das ist ein Xcode-Fehler. Gibt es etwas, was ich tun kann, um das zu beheben? Dies ist nicht das erste Mal, dass es schon passiert und es nervt.

Ich habe bereits mehrfach versucht, Xcode zu säubern und neu zu starten, ohne Glück zu haben.

 This does not work Dies funktioniert nicht (Rechtsklick vom Storyboard auf die Swift-Datei)

 This works Das funktioniert (Rechtsklick von der Swift-Datei auf das Storyboard)

Übrigens, ich verwende Xcode 8.1 mit Swift 3.0.

UPDATE: Ich suche nicht nach einer Antwort, wie man IBOutlets/IBActions verbindet, denn wie ich oben (und auch in den Screenshots) erwähnt habe, kann ich sie bereits verbinden und die App läuft einwandfrei. Die Frage ist mehr, warum Xcode mich nicht von Storyboard> Swift-Datei verbinden lässt, sondern von Swift-Datei> Storyboard. Es tut mir leid, wenn die Frage irreführend ist.

17
Chan Jing Hong

Nachdem ich einige der angegebenen Lösungen ausprobiert hatte, funktionierte das Macbook neu. Es scheint ein Fehler auf XCode zu sein. Naja.

3
Chan Jing Hong

Wir sehen dieses Problem manchmal auch seit Xcode 8 und gehen davon aus, dass dies ein Xcode-Fehler ist.

Als Workaround:

  • Schreibe die Steckdose im Code @IBOutlet weak var myUiElement: UIView!

  • Strg + Ziehen Sie von Ihrer Verkaufsstelle zum UI-Element im Storyboard

20
shallowThought

Es ist einfach, aber leicht zu übersehen. Stellen Sie sicher, dass der Ansichtscontroller, auf den Sie den Auslass ziehen, als benutzerdefinierte Klasse bezeichnet wird, die Sie erstellt haben.

 enter image description here

10
ScottyBlades

Erstellen Sie ein solches Outlet in Objective-C

@property (nonatomic, weak) IBOutlet UIView *view;

oder wie in Swift 3

@IBOutlet weak var instruction: UILabel?

und verbinden Sie es dann wie in diesem Bild angegeben.

 enter image description here

Manchmal funktioniert die normale Verbindung zwischen Aktion und Auslass aufgrund von Unterklassen nicht. Dieser Weg ist für solche Situationen praktisch.

3
Nikhil Manapure

Ich habe mein Problem folgendermaßen gelöst.

  1. Verbinden Sie Ihre Storyboard-Ansicht mit einem anderen ViewController.
  2. Verbinden Sie nun Ihren gewünschten ViewController wieder mit dem Storyboard.

Hoffe das wird für dich funktionieren !!

0
Wajahat Hussain

Zu überprüfende Dinge, wenn IBOutlet keine Verbindung herstellt:

  1. Ist die Klasse im Storyboard definiert?

    Wählen Sie die Variable UIViewController in storyboard aus. Wählen Sie dann auf der rechten Seite den Bildschirm identity inspector aus, und weisen Sie die entsprechende Klasse zu. 

  2. Entspricht der von Ihnen definierte Steckdosentyp dem von storyboard? Zum Beispiel verbinden wir UIButton. Dann sollte die Steckdose so aussehen, den Code für die Steckdose schreiben und dann den View-Controller anschließen:

    @IBOutlet weak var theButton: UIButton!
    
0
Idan