View-Based TableView

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • View-Based TableView

    Hallo allerseits,

    ich hab ein kleines Problem mit einer TableView, das mir nicht klar ist - folgendes funktioniert einwandfrei (ich habe den Code auf das wesentliche gekürzt):

    Quellcode

    1. -(NSView *)tableView:(NSTableView *)tableView
    2. viewForTableColumn:(NSTableColumn *)tableColumn
    3. row:(NSInteger)row
    4. {
    5. NSTableCellView *cell = [tableView makeViewWithIdentifier:[tableColumn identifier] owner:self];
    6. cell.textField.stringValue = [liste valueForKey:[tableColumn identifier]];
    7. return cell;
    8. }
    "liste" ist eine NSDictionary.

    Wenn ich das ganze aber so realisiere wie in der Apple Docu:

    Quellcode

    1. NSTextField *cell = [tableView makeViewWithIdentifier:[tableColumn identifier] owner:self];
    2. cell.stringValue = [liste valueForKey:[tableColumn identifier]];
    3. return cell;
    bekomme ich folgende Exception:

    Quellcode

    1. 2012-03-08 19:32:37.080 Sams[3311:503] -[NSTableCellView setStringValue:]: unrecognized selector sent to instance 0x7ffaec814380
    2. 2012-03-08 19:32:37.092 Sams[3311:503] -[NSTableCellView setStringValue:]: unrecognized selector sent to instance 0x7ffaec814380

    Ich verwende eine TableView von der Stange d.h. ohne Veränderungen der Cells. Irgendwie stehe ich gerade auf dem Schlauch.

    Gruß
    Vertex
  • Was mich irritiert ist, dass ein und die selber Funktion einmal eine TableCellView und einmal ein TextField zurückgeben soll und das im gleichen Code ?

    Bist du sicher das der Code so stimmt ?

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Was mich irritiert ist, dass ein und die selber Funktion einmal eine TableCellView und einmal ein TextField zurückgeben soll und das im gleichen Code ?
    Bist du sicher das der Code so stimmt ?
    Ich sage es mal so, die zweite Variante entspricht den Vorgaben im Guide von Apple (der letzte Code Teil ganz am Ende) und da habe ich erstmal angenommen, dass das so funktionieren muss zumal ich einen ganz normalen Standard-Table verwende ohne Änderungen. Meine table column identifier entsprechen meinen keys im Dictionary (im IB eingetragen) - dass ich den identifier beim table column abfrage sollte also keinen Unterschied machen.
    Was den Rückgabewert betrifft:

    Quellcode

    1. - (id)makeViewWithIdentifier:(NSString *)identifier owner:(id)owner
    2. Return Value: An autoreleased view for the row.
    Sieht für mich so aus, als sei das Beispiel von Apple falsch - aber das grenzt ja schon an Blasphemie :D Ich bin überfragt, ob ein Table denkbar ist bei dem der Apple Code funktioniert.

    Gruß
    Vertex
  • Vertex schrieb:


    In meinen Augen ist das Beispiel schlecht gewählt, da man davon ausgehen kann, dass jeder erstmal einen 08/15-Table im IB erstellt.
    Aber du hast Recht, man sollte tunlichst den ganzen Guide lesen


    Ich bin schon so oft über meine eigene Flüchtigkeit beim Lesen der Cocoa und anderer Dokumentation gestolpert,
    um hinterher festzustellen, dass alles dort steht.

    Mittlerweile schätze ich speziell die Apple-Doku und finde diese sehr ausführlich
    und sorgfältig gemacht.
    Ewig erstaunt...