2015-06-22 4 views
11

Ich versuche, meine UIButton auf meinem Storyboard mit einer benutzerdefinierten Swift-Klasse ableiten, die die Schaltfläche als benutzerdefinierten Hamburger Button anzeigen sollte.IB Designables gibt seltsame Warnung, wenn ich eine benutzerdefinierte Klasse verwende

Ich erhalte diese Warnung und sehe nicht, dass der Hamburger-Button im Interface Builder gerendert wird, obwohl er intermittierend funktioniert.

Die benutzerdefinierte Klasse heißt NTHamburgerButton, ich weiß nicht, warum die Zeichenkette vor dem Klassennamen erscheint.

IB Designables: Mit Klasse UIButton für Objekt mit benutzerdefinierten Klasse weil die Klasse _TtC6CProjectName17NTHamburgerButton existiert nicht.

+0

Zeigen Sie uns einige Code –

+0

Ähnliche Probleme gemeldet hier: http://StackOverflow.com/Questions/26674111/ib-designable-ibinspectable-interface-builder-does-not-update. –

+0

Es scheint, als ob es jetzt funktioniert, seit ich der benutzerdefinierten Klasse IBInspectable-Attribute hinzugefügt habe, ich brauchte sie nicht Inspectable, aber zumindest funktioniert der Interface Builder wie erwartet – Codermonk

Antwort

6

Diese Frage scheint wieder etwas Aufmerksamkeit zu bekommen, also werde ich ein Update geben.

Dieses Problem bestand in einem gemischten Obj-C- und Swift-Projekt. Also war die fragliche Klasse eine Swift-Klasse.

Wenn in Obj-C verfügbar Swift Klassen machen, können Sie die folgende Syntax

@objc(NTHamburgerButton) public class NTHamburgerButton : UIButton {} 

Ansonsten in Ihrem {Projektname} -Swift.h Datei verwenden, die Xcode erstellt werden Sie sehen, dass es diese erzeugt eindeutige Klassennamen wie die aus der Frage.

Das einzige wirkliche Problem hier war, dass die Datei NTHamburgerButton.swift nicht in das Produkt aufgenommen wurde, das ich zu der Zeit betrachtete, aber wenn ich Ziele wechselte, funktionierte es gut. Also das intermittierende Problem.

4

Ich habe das gleiche Problem auftritt, und ich fand eine Antwort von anderen Frage: enter link description here

I Aktualisieren nur alle Ansichten enter image description here

Es mir funktioniert. Hoffe es hilft dir auch.

2

Für mich waren beide Lösungen von Codermonk und Specialvict notwendig, aber nicht genug.

Ich hatte auch im Interface Builder auf Vererben von Target drehen:

enter image description here

Das ist für mich den Trick.

+0

Ich habe eine IBDesignable-Klasse in Cocapods importiert, und es war nur eine ObjC-Klasse mit einem schnellen Header, der die gleiche Warnung verursachte, und damit es funktionierte, musste ich die importierte Klasse in der "Modul" -Kombination auswählen, damit sie funktionierte –

Verwandte Themen