基于视图的NSTableView不显示数据

时间:2014-07-28 01:47:31

标签: objective-c nstableview

我有一个基于视图的TableView,我正在添加简单的数据。但是视图没有正确填充。

 - (int)numberOfRowsInTableView:(NSTableView *)aTableView {

int rows=2;

return rows;
}

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn  row:(int)rowIndex {

// The return value is typed as (id) because it will return a string in most cases.


NSTableCellView *aTableCellView = [aTableView makeViewWithIdentifier:aTableColumn.identifier owner:self];

if ([aTableColumn.identifier isEqualToString:@"FirstName"]) {
    aTableCellView.textField.stringValue = @"Mike";
}

if ([aTableColumn.identifier isEqualToString:@"LastName"]) {
    [aTableCellView.textField setStringValue:@"Bagger"];
}

return aTableCellView;

}

NSImageView

2 个答案:

答案 0 :(得分:2)

如果要使用基于视图的表(并且已在Interface Builder中定义了NSTableCellView子类),则应改为覆盖并实现tableView:viewForTableColumn:row: 委托方法:

NSTableViewDelegate Protocol Reference

此方法应包含上述实现的主体,填充并返回您创建的NSTableCellView

答案 1 :(得分:-1)

您应该只返回列的值,而不是显式设置它。所以,而不是做

aTableCellView.textField.stringValue = @"Mike";

你应该写

return @"Mike"

因此,您的代码应如下所示:

if ([aTableColumn.identifier isEqualToString:@"FirstName"]) {
    return @"Mike";
}

if ([aTableColumn.identifier isEqualToString:@"LastName"]) {
    return @"Bagger"];
}

return nil;