NSTableVIew自定义单元格

时间:2012-04-23 18:52:03

标签: objective-c

我尝试为NSTableView for Mac OS X 10.6和10.7

创建自定义单元格

在10.6我正在做

- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    CustomCell *tableCell = [[[CusomCell alloc] init]autorelease];
    return tableCell;
}

但是如何在10.7中执行此操作?

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
}

Mac OS X 10.7中的方法返回NSView,而CustomCell返回NSCell

我无法使用NSTableCellView,因为这会使程序无法在Mac OS X 10.6上运行

我认为我可以做这样的事情,但我只有Mac OS X 10.6,所以我无法测试这个

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    NSView *view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 299, 75)];
    [view addSubview:tableCell.controlView];
    return view;
}

有人可以检查我在做什么是正确的吗?或者也许有人知道。在这种情况下如何正确行事

2 个答案:

答案 0 :(得分:1)

您可以在Mac OS X 10.7中继续使用基于单元格的NSTableViews。如果忽略10.7中添加的新功能,它们的工作方式与10.6相同。使基于视图的表是完全可选的。因此,如果您的表视图在10.6中运行良好,它也应该在10.7中正常工作。 -tableView:viewForTableColumn:不是很好,也行不通。把它拿出来,因为它是不必要的。

答案 1 :(得分:0)

为什么不在10.7中使用- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row?它仍然有效吗?