OS X上基于视图的表格单元格未正确显示数据

时间:2011-12-02 07:54:07

标签: macos cocoa nstableview nstableviewcell

所以我承认自己是可可的总菜鸟,所以我提出了一个noob问题。我可能只是错过了明显的愚蠢的地方,但我似乎无法让我的表填充数据。

我正在关注table view playground示例,但每当我尝试模仿Basic TableView窗口时,第一行就会成为我添加的行数的高度(至少就是它的样子。这是我的代码:

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
{
    NSString *identifier = [tableColumn identifier];
    if ([identifier isEqualToString:@"filename"]) {
        // We pass us as the owner so we can setup target/actions into this main controller object
        NSTableCellView *cellView = [fileBrowserTable makeViewWithIdentifier:identifier owner:self];
        // Then setup properties on the cellView based on the column
        cellView.textField.stringValue = [fileList filenameAtIndex:row];
        cellView.imageView.objectValue = [[NSWorkspace sharedWorkspace] iconForFile:[fileList fullPathAtIndex:row]];
        return cellView;
    }
    else if ([identifier isEqualToString:@"path"]) {
        NSTextField *textField = [fileBrowserTable makeViewWithIdentifier:identifier owner:self];
        textField.objectValue = [fileList pathAtIndex:row];
        return textField;
    }
    else if ([identifier isEqualToString:@"preview"]) {
        NSTextField *textField = [fileBrowserTable makeViewWithIdentifier:identifier owner:self];
        textField.objectValue = [fileList previewAtIndex:row];
        return textField;
    }
    return nil;
}

我认为值得一提的是,当使用旧的学校文本字段单元格时,我没有显示数据的问题(当然上面的代码在这种情况下是不同的)所以我肯定肯定它不是我的数据结构的问题持有价值观。我还设置了正确的委托和数据源

使用“文件名”标识符的单元格使用“图像和文本表格视图单元格”,而其他单元格仅使用“文本表格单元格视图”。它们都不起作用所以我猜我的桌子怎么摆错了。但是在将我的表与示例的表进行比较时,它只是一个随地吐痰的反射(减去标识符文件名)。

我注意到我无法弄清楚的一件事是示例说:

  

NSTableView有两个重用标识符关联:“MainCell”和“SizeCell”都与nib ATBasicTableViewCells.xib相关联。

我真的不明白这句话。然而,话虽如此,该示例不包含任何ATBasicTableViewCells.xib,也没有与它(代码或ib)的任何关联,我可以找到。

1 个答案:

答案 0 :(得分:0)

您是否尝试将NSTableView的rowSizeStyle设置为NSTableViewRowSizeStyleCustom? [更新]重新阅读你的问题,我不清楚你的问题是什么。我给出的解决方案与每个单元格大小的问题有关,除非将rowSizeStyle设置为自定义,否则不会考虑这些问题。