【问题标题】:Customized NSTableCellView's IBOutlet is null自定义 NSTableCellView IBOutlet 为空
【发布时间】:2013-11-05 23:33:05
【问题描述】:

我有一个NSTableView,它的数据源和委托已经设置好了。我想自定义单元格,所以我从库中拖动了一个基于视图的单元格视图。然后我创建了一个类ServiceCell,它继承自NSTableCellView,以便完全控制我的特殊单元格。之后,我从 nib 文件中按住 Control 拖动到单元格类中,以在单元格中创建图像和文本字段的 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 中找到了该单元格,并在应用程序窗口中显示了该单元格。我就是无法设置它的值,为什么?

【问题讨论】:

标签: objective-c cocoa interface-builder nstablecellview


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-06
      • 2016-01-22
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      相关资源
      最近更新 更多