Funktioniert das neue IBDesignable-Attribut des Interface Builders mit NSButton und anderen Steuerelementen in Cocoa?

9

Ich habe es geschafft, dass die IBDesignable/IBInspectable Attribute mit direkten Unterklassen von NSView arbeiten, aber nicht mit einer direkten Unterklasse von NSButton . Dies veranlasst mich zu der Frage, ob die Cocoa-Implementierung tatsächlich auf NSView beschränkt ist.

Fast jedes Beispiel im Web (und Apple WWDC 2014 Xcode-Video) verwendet NSView und zieht dann eine benutzerdefinierte Ansichtskomponente aus der Bibliothek in die Zeichenfläche (und ändert dann ihre Klasse).

Ist es möglich, IBDesignable mit Unterklassen von NSControl und NSButton etc ... zu verwenden? Ich habe viele Beispiele im Web mit UIButton gesehen.

Wenn es möglich ist, was sollten Sie aus der Bibliothek auf die Leinwand ziehen? Es macht keinen Sinn, dass es eine "benutzerdefinierte Ansicht" ist. Auf der anderen Seite gibt es kein "benutzerdefiniertes Steuerelement" verfügbar.

Um klar zu sein, kann ich das IBInspectable-Attribut zur Entwurfszeit anzeigen lassen; aber alle Änderungen scheinen zur Entwurfszeit nicht zu rendern.

Die Problemumgehung besteht darin, ein beliebiges benutzerdefiniertes NSButton , das ich erstellen möchte, in ein NSView (über die Komposition) einzubinden, aber das scheint ein bisschen wie ein Hack zu sein ...

    
Sam 12.12.2014, 22:17
quelle

1 Antwort

0

Ich habe angefangen, mit einem benutzerdefinierten NSButton und NSButtonCell herumzuspielen.

Wenn Sie eine Schaltfläche aus der Bibliothek auf die Zeichenfläche ziehen und ihre Klasse und die Zellklasse ändern, wird das Rendern nicht fortgesetzt. Ich denke, das liegt daran, dass Interface Builder immer noch eine Menge benutzerdefinierter Einstellungen zum Einrichten von NSButtonCell vornimmt.

Was für mich in Ordnung ist, ist das Ziehen einer benutzerdefinierten Ansicht aus der Bibliothek auf die Zeichenfläche und das Festlegen der Klasse. Damit dies funktioniert, müssen Sie die Zelle in NSButtons -initWithCoder: einrichten.

Außerdem habe ich ein Sample von Apple mit einem Layer-Backed-Custom gefunden Kontrollkästchen

    
catlan 17.12.2014 21:47
quelle