setBackgroundColor per Binding setzen (NSCollectionView)?

A

Algo

Aktives Mitglied
Thread Starter
Dabei seit
15.03.2008
Beiträge
365
Reaktionspunkte
35
Hallo,

Ich habe vor ein paar Wochen mit Objective-C und XCode angefangen. Viel über Aaron Hillegass Standardwerk gelernt und Anderes über google zusammengereimt, aber zu diesem Thema finde ich einfach keine Lösung. Vielleicht könnt ihr hier weiterhelfen:

Ich bastel gerade an einer kleinen Beispiel-App:
Ich habe eine eigene Model-Klasse die eine Person beschreibt (Bild, Name, Wohnort usw.). Diese Speichere ich in einem Array und Zeige die Daten über einen NSArrayController und Binding per InterfaceBuilder in einer NSCollectionView an dessen View man ja schön per InterfaceBuilder konfigurieren kann.

Nun zum Eigentlichen Problem: Für jeden User kann seperat eine Farbe gewählt werden. Auch diese ist las Property im Model hinterlegt. Nun wollte ich damit in der View die einzelnen Items entsprechend markieren mit dieser Farbe. Der Einfachheit halber hab ich ein Label genommen es drauf geklatscht und wollte nun einfach dessen Hintergrund per Binding ändern. Allerdings fehlen mir im Interface Builder die entsprechenden Optionen. Ich kann dort zwar sachen wie FontColor per Binding setzen aber habe keine Optionen für die Hintergrundfarbe (Liegt wahrscheinlich daran, dass die wohl nur über getter und setter zu setzen sind nicht als Property?).

Die Frage ist nun wie kann ich dies bewerkstelligen. Was wäre der beste Weg dazu (Eventuell eleganter selber ein Rechteck zu zeichnen?
 
Ich kann dort zwar sachen wie FontColor per Binding setzen aber habe keine Optionen für die Hintergrundfarbe (Liegt wahrscheinlich daran, dass die wohl nur über getter und setter zu setzen sind nicht als Property?).
Nein, die Schnittstelle ist mehr oder weniger dieselbe. Keine Ahnung wie man das dem InterfaceBuilder beibringen kann (+exposeBinding: ?)

Die Frage ist nun wie kann ich dies bewerkstelligen. Was wäre der beste Weg dazu (Eventuell eleganter selber ein Rechteck zu zeichnen?
Kannst auch bind:toObject:withKeyPath:eek:ptions: benutzen.
Code:
[theView bind: @"backgroundColor" toObject: theArrayController withKeyPath: @"selection.theColorProperty" options: nil]

So mit Farben rumspielen klingt aber grundsätzlich nach keiner guten Idee. Ein Textfeld mit einer Hintergrundfarbe sieht jedenfalls beschissen aus.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Algo
Ah danke dir ... dann werd ich mal in der Richtung weiter forschen ... Das Textfeld soll auch gar keinen Text haben ich brauche eigentlich nur eine definierte Fläche die entsprechend eingefärbt wird je nach Einstellung. Werde mir das binding-Thema noch mal etwas genauer anschauen.

Sonst noch irgendwer Vorschläge ? Immer her damit :).
 
OK so hat es geklappt:
Ich hab folgendes Binding einfach in die awakeFromNib reingeworfen und entsprechende Outlets verbunden zur Collection Item View und meinem TextFeld welches Farbig werden sollte.
Code:
[colorField bind: @"backgroundColor" toObject:colViewItem withKeyPath: @"representedObject.backgroundColor" options:nil];

Danke für die Hilfe war doch einfacher als ich dachte :/.

MfG Michael
 
Zurück
Oben Unten