Hier ist ein Stück Code, das ich verwende, um view-based NSTableView mit Daten zu füllen:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
MyCustomCellView *view = (MyCustomCellView *)[tableView makeViewWithIdentifier:@"MyCustomCellView" owner:self];
if (!view) {
NSNib *cellNib = [[NSNib alloc] initWithNibNamed:@"MyCustomCellView" bundle:[NSBundle mainBundle]];
NSArray *array = nil;
if ([cellNib instantiateNibWithOwner:self topLevelObjects:&array]) {
DLog(@"%@", array);
view = [array objectAtIndex:0];
[view setIdentifier:@"MyCustomCellView"];
}
[cellNib release];
}
MyObject *object = [_objects objectAtIndex:row];
[[view titleTextField] setStringValue:object.title];
return view;
}
En DLog
Anweisung druckt Arrays wie folgt für zwei aufeinanderfolgende Delegatenaufrufe:
(
"<MyCustomCellView: 0x7fb2abe81f70>",
"<NSApplication: 0x7fb2ab80cbf0>"
)
(
"<NSApplication: 0x7fb2ab80cbf0>",
"<MyCustomCellView: 0x7fb2abb2c760>"
)
Dies ist nur für zwei Zeilen von einigen hundert ausgegeben, so dass ich zufällig entweder meine Ansicht korrekt angezeigt oder ich erhalten unrecognized selector
Fehler beim Aufruf setIdentifier:
para view
Objekt, wenn view
unter objectAtIndex:0
ist eigentlich eine Instanz von NSApplication
Objekt der obersten Ebene aus der geladenen Feder.
Ist dies ein Fehler in der Nib-Lademechanismus oder bin ich tun etwas falsch mit diesem Code?