自定义NSTableCellView IBOutlet为空

时间:2013-10-27 01:30:16

标签: objective-c cocoa interface-builder nstablecellview

我有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中找到该单元格并在应用程序窗口中显示该单元格。我只是无法设定它的价值,为什么?

2 个答案:

答案 0 :(得分:0)

问题是您正在访问文本字段但未访问其textvalue。尝试下面的日志语句: -

NSLog(@"Field = %@", cellView.textField.stringValue);

答案 1 :(得分:0)

在表格视图中选择单元格并给出标识符名称(与您在代码中使用的相同,对于您的剪辑它将是@"ServiceCell"),您的代码部分是正确的,它将起作用。