1

当我尝试为基于视图的每行构造一个视图时,NSTableView该方法makeViewWithIdentifier:owner:始终返回 nil。该表是在 IB 中构建的,所有似乎都正确链接,委托方法都按我的预期调用。在查看有关makeViewWithIdentifier-method 的 Apple 文档时,我找不到该方法返回 nil 的原因。代码片段:

    - (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    if ([tableColumn.identifier isEqualToString:@"foo"]) {
        NSTableCellView *view = [tableView makeViewWithIdentifier:@"id" owner:self]; // Is always nil..
        view.textField.stringValue = [myArray objectAtIndex: row];

        return view;
    }
    return nil;
}

为什么可以view为零?

4

1 回答 1

0

您必须在 xib 和代码中使用相同的标识符:

static NSString * const ItemMainTableCellViewIdentifier = @"ItemMainTableCellViewIdentifier";

nib = [[NSNib alloc] initWithNibNamed:@"ItemMainTableCellView" bundle:nil];
[self.table registerNib:nib forIdentifier:ItemMainTableCellViewIdentifier];

ItemMainTableCellView *cellView = [tableView makeViewWithIdentifier:ItemMainTableCellViewIdentifier owner:self];

在此处输入图像描述

于 2017-07-12T11:01:10.530 回答