3 Stimmen

NSTableView Bindungen wie man eine Zeile hinzufügen

Ich arbeite an einer Anwendung mit dieser Benutzeroberfläche (sorry, die Sprache ist Niederländisch):

http://www.flickr.com/photos/pluueer/5756159100/

Die Hinzufügefunktion (inklusive der vier NSTextFields) unter dem NSTableView soll irgendwann in ein eigenes Fenster verschoben werden, aber im Moment funktioniert das so auch. Ich habe Bindungen gemäß einem Tutorial eingerichtet (http://cocoadevcentral.com/articles/000080.php), aber das Tutorial zeigt nicht, wie man Zeilen auf die Art hinzufügt, wie ich es möchte (es fügt einfach eine leere Zeile hinzu, die man im NSTableView bearbeiten muss).

Ich habe eine Verbindung zwischen dem 'Voeg toe' (Niederländisch für 'Hinzufügen') Button und dem Array Controller hergestellt. Aber nach dem Klicken bekomme ich die Meldung:

2011-05-28 23:37:56.149 Hop Calc[4345:a0f] -[__NSPlaceholderDictionary initWithObjects:forKeys:]: number of objects (0) not equal to number of keys (4)

Es ergibt Sinn, weil ich noch nichts für das Hinzufügen von Zeilen implementiert habe, aber ich weiß einfach nicht wie.

5voto

Joshua Nozzi Punkte 60200

"Eine Zeile zur Tabelle hinzufügen" ist der falsche Ansatz. Ihre Tabelle stellt eine Sammlung dar und ein Controller liefert die Informationen an die Tabelle, vermittelt zwischen der Tabelle (Ansicht) und der Sammlung (Modell). Da Sie Bindungen erwähnten, wird die Sammlung wahrscheinlich von einer NSArrayController verwaltet. Sie möchten also ein neues Objekt (der Art, die Ihr Array-Controller verwaltet) zum Inhalts-Array des Array-Controllers hinzufügen.

Einfachste Möglichkeit: Verbinden Sie die Schaltfläche Hinzufügen mit der -add: Aktion des NSArrayControllers. Dadurch wird eine leere Zeile hinzugefügt.

Wenn Sie mehr Kontrolle wünschen, verbinden Sie die Schaltfläche Hinzufügen mit Ihrer eigenen benutzerdefinierten Aktion in einem Controller. Diese Aktion wird eine Instanz von dem erstellen, was durch Ihren Array-Controller dargestellt wird, es vorbesetzen (oder was auch immer Sie tun möchten) und dann, unter Verwendung eines Outlets, der auf Ihren NSArrayController verweist, die -addObject: Methode des Array-Controllers aufrufen, um das Objekt hinzuzufügen (eventuell gefolgt von einem -rearrangeObjects-Aufruf, um den Array-Controller dazu zu bringen, seine Inhalte neu zu sortieren).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X