我有一个基于视图的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;
}
答案 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;