当我尝试为基于视图的NSTableView每行构造一个视图时,方法makeViewWithIdentifier:owner:总是返回nil。表是在IB中构建的,似乎所有的表都被正确地链接在一起,委托方法都像我所期望的那样被调用。在浏览有关makeViewWithIdentifier -method的苹果文档时,我找不到该方法返回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可以为nil?
发布于 2017-07-12 19:01:11
您必须在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];

https://stackoverflow.com/questions/41653020
复制相似问题