Ich habe kürzlich ein Upgrade auf Xcode 8 durchgeführt und habe Probleme mit dem Storyboard.
Wenn ich das Projekt öffne und das Storyboard nicht geöffnet habe, wird es kompiliert und einwandfrei ausgeführt. Sobald ich das Storyboard öffne, erhalte ich mehrere Fehler über IB Designables, wie unten gezeigt.
Diese Ansichten sind die einzigen Ansichten, die benutzerdefinierte Ansichten von verwenden TextFieldEffects
und BEMCheckbox
die ich mit Cocoapods importiert habe.
ios
xcode8
xcode-storyboard
Alan
quelle
quelle
Antworten:
Sie können eine der folgenden Möglichkeiten ausprobieren, um die Ursache herauszufinden:
IBDesignablesAgentCocoaTouch
Protokollen in diesem Verzeichnis:~/Library/Logs/DiagnosticReports
und ermitteln Sie die Ursache.Gehen Sie zum Editor -> Ausgewählte Ansicht debuggen, während Sie Ihre
@IBDesignable UIView
in Ihrem Storyboard auswählen , und sehen Sie sich die Stapelverfolgung an.Ordner "Daten ableiten" löschen.
Bereinigen Sie Ihr Projekt
Shift
+Command
+Alt
+K
.Erstellen Sie Ihr Projekt
Command
+B
.quelle
Fatal error: Use of unimplemented initializer 'init(frame:)' for class 'TestIBKit.Button'
. Ich wusste nicht, dassIBDesignablesAgentCocoaTouch
Prozessaufrufeinit(frame:)
stattinit?(coder aDecoder:)
.init(frame:)
in meiner UIButton-UnterklasseIch habe das Problem folgendermaßen gelöst:
File > Workspace settings
.DerivedData
Ordners geöffnet .DerivedData
Ordner und löschen Sie den Ordner, der Ihrem Projekt entspricht.Editor > Refresh all views
.Aktualisiert
Manchmal einfach direkt zur
Editor > Refresh all views
Arbeit gehen. WennRefresh all views
deaktiviert, beenden Sie Xcode und versuchen Sie es erneut.quelle
Ich lösche einfach die Ansicht, die fehlgeschlagen ist, und drücke Befehl + Z, um das Löschen rückgängig zu machen. Für mich geht das.
Wenn Sie die fehlgeschlagene Ansicht später bearbeiten, kann der Fehler erneut auftreten. Führen Sie die obigen Schritte erneut aus.
quelle
Ich habe dieses Problem in CocoaPod 1.5.0 festgestellt. Die Lösung besteht darin, den Pod erneut zu installieren (Pod-Installation erneut), sobald dieser Fehler angezeigt wird, oder Sie können stattdessen CocoaPod 1.4.0 verwenden. Es funktioniert gut in 1.4.0 (zumindest für mich.)
aktualisieren:
Fügen Sie das folgende Skript in Podfile hinzu, um das Problem in 1.5.0 zu lösen
Referenz: https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
quelle
s work for me, you should add
endet bis zum letzten Code.Das Hinzufügen des folgenden Codes zu meiner
@IBDesignable
Klasse hat den Trick getan.quelle
UITextView
. (1)init(frame: CGRect, textContainer: NSTextContainer?)
, (2)init?(coder aDecoder: NSCoder)
. Dann neu erstellen und Warnung (Fehler) weg. Sie müssen nicht einmal den Build-Ordner bereinigen.Für alle, die diese
IBDesignablesAgentCocoaTouch
Datei nicht finden können oder beim Versuch, ausgewählte Ansichten im Editor zu debuggen, eine Fehlermeldung angezeigt wird, gibt es eine andere Möglichkeit, die Fehler "Fehler beim Rendern" zu debuggen.Öffnen Sie die 'Console'-App, wählen Sie in der Seitenleiste Ihren aktuellen Mac aus (dieser wird wahrscheinlich standardmäßig automatisch ausgewählt) und suchen Sie dann in der Suchleiste nach "IBSceneUpdate" und drücken Sie die Eingabetaste.
Auf diese Weise erhalten Sie jedes Mal einen Xcode-Fehler für eine
IBDesignable
nicht rendern können, einen neuen Eintrag "IBSceneUpdate" mit weiteren Details zum Fehler.So konnte ich zumindest meine
IBDesignable
Fehler debuggen !quelle
Wenn Sie eine xib-Datei für eine benutzerdefinierte Ansicht verwenden. Versuche dies:
Wechsel von
Zu:
quelle
Versuchen Sie, "Merkmalsvariationen verwenden" (Bereich "Identität und Typ") für alle XIB-Dateien zu deaktivieren, die Sie möglicherweise für benutzerdefinierte Ansichten haben, die in Ihrem Storyboard verwendet werden.
quelle
Mein Problem wurde gelöst, indem Ordner (die mit diesem Projekt zusammenhängen) aus abgeleiteten Datenordnern gelöscht wurden. Klicken Sie dazu auf Datei -> Projekteinstellung -> und dann auf das Pfeilzeichen neben /Users/.../Xcode/DerivedData. Klicken Sie auf DerivedData-Ordner. Sie werden sehen, dass Ihr Projekt mit dem Namen Ordner diese löscht. Beenden Sie xcode, um Ihr Projekt zu öffnen. Bereinigen Sie das Projekt mit diesem Schritt. Produkt-> Bereinigen und erstellen Sie das Projekt: Produkt-> Erstellen Diese Probleme werden behoben.
quelle
Richtige Antwort von @Maria :
Alternativer Weg :
Spotlight
console.app
Crash reports
IBDesignablesAgent-iOS
und überprüfen Sie das Absturzprotokollquelle
Öffnen Sie einfach Ihr Storyboard -> Editor -> Alle Ansichten aktualisieren. Diese Arbeit für mich.
quelle
Ich habe versucht, das Projekt zu bereinigen und auszuführen, um dieses Problem nicht zu lösen.
Aber das Projekt wurde geschlossen und wieder geöffnet .
quelle
Als ich dies debuggte, fand ich heraus, dass es einige Klassen gibt, die die Benutzeroberfläche modifizieren. In der Regel marquelabel, eine Unterklasse von UILabel oder einer anderen Klasse, die UIView unterordnet und zur Laufzeit ui zeichnet und mit der Autolayout-Engine kollidiert. Geben Sie für diese benutzerdefinierten Ansichten eine feste Breite oder Höhe an. Wenn es Ihr Problem nicht löst, versuchen Sie folgende Lösungen: -
Lösung 1: - Kommentieren Sie #use_frameworks in Ihrer Pod-Datei aus.
Lösung 2: - Versuchen Sie, abgeleitete Daten zu löschen
quelle
Ich hatte das gleiche Problem und kam hierher, um herauszufinden, was passiert ist. Ich bemerkte die am besten bewertete Antwort und die Antwort selbst half mir nicht, da IBDesignable nicht im Protokollordner vorhanden war und ich dort bereits alle anderen Optionen ausprobiert hatte. In den Kommentaren bemerkte ich jedoch, dass jemand über eine Frame-Init sprach.
Ich habe mich entschlossen, meine IBDesignable-Erweiterung für UIView zu kommentieren, und das Problem wurde sofort behoben. Um dies zu beheben, suchen Sie die Erweiterung, die das Problem verursacht, und stellen Sie sicher, dass Sie die erforderlichen Inits einrichten, indem Sie eine IBDesignable-Klasse erstellen und die erforderlichen Initialisierer wie folgt bereitstellen:
WICHTIG: Denken Sie daran, die neue Klasse zu dem Element hinzuzufügen, für das Sie das Designable verwenden.
quelle
Gleicher Fehler: Hatte UITextField angepasst und den Interface Builder verwendet, war der Fehler in der Konsole -Verwendung des nicht implementierten Initialisierers 'init (frame :)' für die Klasse "CustomField"
Der Initialisierer wurde hinzugefügt, um den Fehler zu beheben
quelle
Ich hatte dieses Problem nach dem Update auf die neueste XCode-Version. Nachdem ich mehrere oben beschriebene Lösungen ausprobiert hatte, habe ich nur ganz Xcode und dann das System heruntergefahren und es eingeschaltet und das hat bei mir funktioniert.
quelle
Nachdem Sie die erforderlichen Änderungen vorgenommen haben, ändern Sie das Storyboard oder in meinem Fall eine .xib, um sie in "XCode 7" zu öffnen, zu speichern und zu schließen. Dies ist nur eine Stop-Gap-Maßnahme, um die Fehler zu beheben. Letztendlich müssen Sie sie jedoch beheben oder tun, bis Sie nicht mehr dazu in der Lage sind.
quelle
In meinem Fall habe ich eine Bibliothek verwendet, die in Unterklassen unterteilt war
UIView
. Es wurde verwendetIB_DESIGNABLE
und es fehlte der Anruf an[super awakeFromNib]
. Nachdem ich den Aufruf zu dieser Methode hinzugefügt habe, ist der Fehler behoben.Ich bin mir nicht sicher, ob die Tatsache, dass es implementiert wurde,
IB_DESIGNABLE
einen Einfluss darauf hatte.quelle
Dies ist für mich der einfachste Weg: Fügen Sie dieses Skript zu Ihrem hinzu
Podfile
Podfile:
Quelle:
Diese Problemumgehung für @IBDesignable finden Sie hier: https://github.com/CocoaPods/CocoaPods/issues/5334
quelle