Verbindung von IBOutlet vom Storyboard zur UIView-Unterklasse konnte nicht hergestellt werden

9

Ich kann mit der rechten Maustaste klicken und aus meiner benutzerdefinierten UIView-Unterklassendatei in die Storyboard-Elemente ziehen, um sie zu verbinden, aber nicht anders herum. Ich glaube, das ist ein Xcode-Bug. 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 schon mehrmals versucht, Xcode zu säubern und neu zu starten, ohne Erfolg.

Dies funktioniert nicht (Rechtsklick vom Storyboard auf die Swift-Datei)

Dies funktioniert (Rechtsklick von der IBAction der swift-Datei auf das Storyboard)

Übrigens, ich benutze Xcode 8.1 mit Swift 3.0.

UPDATE: Ich bin nicht auf der Suche nach einer Antwort, wie man IBOutlets / IBActions verbindet, weil ich, wie ich oben erwähnt habe (und auch in den Screenshots), bereits eine Verbindung herstellen kann und die App läuft gut. Die Frage ist mehr auf WARUM Xcode würde mich nicht von Storyboard verbinden & gt; Swift-Datei, aber mich von Swift-Datei & gt; Storyboard. Es tut mir leid, wenn die Frage irreführend ist.

    
Chan Jing Hong 02.12.2016, 12:23
quelle

8 Antworten

0

Nachdem ich einige der gegebenen Lösungen getestet habe, was zuletzt funktioniert hat, starte ich das my Macbook neu. Es scheint ein Fehler auf XCodes Seite zu sein. Na gut.

    
Chan Jing Hong 02.12.2016, 13:01
quelle
13

Wir sehen dieses Problem manchmal auch seit Xcode 8 und nehmen an, dass dies ein Xcode-Bug ist.

Als Workaround:

  • Schreiben Sie den Ausgang in den Code @IBOutlet weak var myUiElement: UIView!

  • Strg + Ziehen Sie von Ihrem Ausgangspunkt zum Element der Benutzeroberfläche im Storyboard

shallowThought 02.12.2016 13:24
quelle
3

Es ist einfach, aber leicht zu übersehen. Stellen Sie sicher, dass der Ansichtscontroller, an den Sie die Steckdose ziehen, mit der benutzerdefinierten Klasse verbunden ist, die Sie erstellt haben.

    
ScottyBlades 16.01.2018 05:56
quelle
2

Erstellen Sie einen solchen Ausgang in Objective-C

%Vor%

oder wie in swift 3

%Vor%

und verbinden Sie es dann wie in diesem Bild angegeben.

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

    
Nikhil Manapure 02.12.2016 12:53
quelle
0

Dinge zu prüfen, ob IBOutlet nicht verbindet:

  1. Ist die Klasse im Storyboard definiert?

    Wählen Sie die UIViewController in storyboard , dann wählen Sie auf der rechten Seite des Bildschirms die identity inspector und weisen Sie die entsprechende Klasse zu.

  2. Entspricht der von Ihnen definierte Ausgangstyp dem von storyboard ? Zum Beispiel verbinden wir UIButton , dann sollte die Steckdose so aussehen, schreiben Sie den Code für die Steckdose und verbinden Sie sich dann mit dem View-Controller:

    %Vor%
Idan 02.12.2016 12:44
quelle
-1

1: Weisen Sie die Klasse viewController zu.

2: Säubern Sie Ihr Projekt mit Shift-Alt-Cmd-K.

3: Beenden Sie zuerst Xcode und löschen Sie die abgeleiteten Daten. gehe zu: ~ / Library / Entwickler / Xcode / DerivedData     

Mohd Sultan 02.12.2016 12:39
quelle
-1

Eine andere Möglichkeit besteht darin, Ihren Button-Namen manuell in einem View-Controller wie diesem zu erstellen -

%Vor%

Schließen Sie dann Ihre Schaltfläche per Drag an, um den Controller als Bild anzuzeigen [!

PS: - Bitte säubern Sie auch Ihre abgeleiteten Daten.

    
neha mishra 02.12.2016 12:58
quelle
-4

Drücken Sie Strg, ziehen Sie an eine schnelle Datei und erstellen Sie einen Ausgang.

    
Sagar Snehi 02.12.2016 12:38
quelle