4

Wenn ich eine benutzerdefinierte UI-Klasse in Interface Builder von Modul/Frameworks verwenden, funktioniert alles perfekt. Aber wenn ich eine Erweiterung für diese Klasse in mein Projekt schreibe und eine benutzerdefinierte Klasse (in Interface Builder) einstelle, setzt Interface Builder das Modul der benutzerdefinierten Klasse auf mein Projekt. Und wenn ich versuche, diese benutzerdefinierte Klasse in Code zu verwenden, Xcode sagen:Falsches Modul für benutzerdefinierte Klasse in Interface Builder

"Unknown class _TtC9*modulename*18*MyCustomLabel* in Interface Builder file." 

Ein Beispiel:

  • TTTAttributedLabel neues Projekt als separates Modul hinzugefügt (oder wirft cocoapods).
  • Fügen Sie ein einfaches UILabel in das Storyboard ein und legen Sie eine benutzerdefinierte Klasse als TTTAttributedLabel
  • Fügen Sie Outlet zu Code hinzu und drucken (NSLog) dieses Label.

Xcode schreiben, dass es TTTAttributedLabel ist.

  • eine leere Erweiterung TTTAttributedLabel
extension TTTAttributedLabel{ } 
  • entfernen und wieder gesetzt benutzerdefinierte Klasse für das Label im Interface Builder hinzufügen;
  • Drucken (NSLog) das Etikett;

Und Xcode schreiben Warnmeldung und sagen, dass unser Label UILabel ist.

Ist es ein Interface Builder Fehler oder muss ich etwas vor der Erweiterung für Module schreiben?

Info: schnell, xcode6.3-7.3

Antwort

2

ich das gleiche Problem sehe, scheinen ich allerdings eine Abhilfe gefunden zu haben.

Um diesen Fehler zu vermeiden, müssen Sie beim Erstellen der Erweiterung den vollständigen Namen der Klasse einschließlich des Modulnamens angeben. So wird es:

extension TTTAttributedLabel. TTTAttributedLabel { } 
Verwandte Themen