• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Cocoa Binding Problemchen

zorn

Zuccalmaglios Renette
Registriert
18.02.06
Beiträge
260
Hallo,

dank eurer Hilfe bin ich viel, viel weiter mit meinem kleinen Lerntool. Thx!
Jetzt happerts mit Bindings:
Ich habe versucht so viel mir möglich war mit Bindings zu erledigen, scheitere jetzt aber an einem Problem:

Ich habe eine CoreData-Entity 'category' die ich per 'ValueSelection' 'content' ControllerKey = 'arrangedObjects' an einn NSPopUpButton gebunden habe. Der PopUp ist also eine schöne Liste der Entity 'category'. Wie kann ich jetzt umgekehrt die per NSPopUpButton gewählte Value in der Entity selecten?
Mein ursprünglicher Plan war per '- (id <NSMenuItem>)selectedItem' die Value abzufragen und dan per Code zu setzen. Aber hey - das geht doch bestimmt auch per Bindings? Hat mir jemand einen Tip wie?
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Du stehst nicht alleine dar. Pop-Ups zu binden, ist eine Arbeit für Masochisten.

Das Grundproblem taucht bei allen to-many-Bindngs auf. Hier ist ein "Denkfehler" in Cocoa. Am einfachsten sieht man das bei Table-Views, dort tut es nur einfach nicht so weh.

Ein to-many-Binding erwartet ein Array (oder Set). Also müsste etwa bei Table-Views *einmal* die Zeilen der *Tabelle* (nicht einr einzelnen Spalte) hieran gebunden werden. Das wäre der Controller-Key. Jede Spalte bekommt dann nur noch einen Key-Path, was dem Model-Key entspräche. Man müsste das also aufbrechen. Das macht der IB jedoch nicht so. Theoretisch ist es vom UI her möglich,
die einzelnen Spalten an verschiedene Arrays zu binden, was offenkundig Blödsinn ist.

Aber wie sagt der Kölsche: Et ess wie et ess.


Zurück zum Thema: Wenn du das als Selektion für weitere Bindings benötigst, bietet es sich an, das Selection-Index-Binding des Pop-Ups an die Selection-Index-Eigenschaft des Array-Controllers zu binden. Dann ist im Array-Controller immer die Auswahl des Pop-Ups angewählt. Weitere Views, die davon ausgehen, verhalten sich dann also synchron.

Wenn du die Selektion speichern möchtest, so musst du die Selected-Object-Eigenschaft des Pop-Ups entsprechend an dein Model binden. Sie wird dann dort hineingesetzt.

Das war jetzt aus dem Kopf und daher ohne rosarotes Schießgewehr.
 
  • Like
Reaktionen: Jamsven

zorn

Zuccalmaglios Renette
Registriert
18.02.06
Beiträge
260
YEEEEEE-Ha! Danke - funktioniert. (...das ist sooo kool - keine Zeile Code...)
 

zitzmannm

Reinette de Champagne
Registriert
12.07.08
Beiträge
413
Bei mir funktionierts so nicht - hat sich irgendwas geändert???