MakeViewWithIdentifier:owner:返回nil

时间:2017-01-14 17:42:38

标签: objective-c macos nstableview nstablecellview

当我尝试为基于视图的NSTableView构建每行视图时,方法makeViewWithIdentifier:owner:始终返回nil。该表是在IB中构建的,并且所有表似乎都正确链接,委托方法都按照我的预期调用。在查看关于makeViewWithIdentifier方法的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可以为零?

1 个答案:

答案 0 :(得分: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];

enter image description here