1

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

4

2 回答 2

0

问题是您正在访问您的文本字段,但没有访问其文本值。尝试如下所示的日志语句:-

NSLog(@"Field = %@", cellView.textField.stringValue);
于 2013-10-27T09:25:13.613 回答
0

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

于 2013-10-28T06:29:44.213 回答