我有NSTableView
,其数据源和委托已设置完毕。我想自定义单元格,所以我从库中拖动了基于视图的单元格视图。然后我创建了一个继承自ServiceCell
的类NSTableCellView
,以便完全控制我的特殊单元格。之后,我控制 - 从nib文件拖动到单元格类,以在单元格中创建图像和文本字段的IBOutlet
属性。
在NSTableView的委托方法中,我写了这个:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
// Get a new ViewCell
ServiceCell *cellView = [tableView makeViewWithIdentifier:@"ServiceCell" owner:self];
NSLog(@"Field = %@", cellView.textField); //which turns out to be null!!!
if( [tableColumn.identifier isEqualToString:@"ServiceColumn"] )
{
cellView.serviceImage.image = nil;
cellView.nameLabel.stringValue = @"Hello";
return cellView;
}
return cellView;
}
如您所见,文本字段为空!但makeViewWithIdentifier:
已在Interface Builder中找到该单元格并在应用程序窗口中显示该单元格。我只是无法设定它的价值,为什么?
答案 0 :(得分:0)
问题是您正在访问文本字段但未访问其textvalue。尝试下面的日志语句: -
NSLog(@"Field = %@", cellView.textField.stringValue);
答案 1 :(得分:0)
在表格视图中选择单元格并给出标识符名称(与您在代码中使用的相同,对于您的剪辑它将是@"ServiceCell"
),您的代码部分是正确的,它将起作用。