tableView:viewForTableColumn:row:未调用

Nic*_*non 5 cocoa nstableview appkit

我是AppKit的新手,但不是UIKit.
我尝试使用一个NSTableView,我想以编程方式填充.

所以我实施了

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
    return 1;
}

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
    return nil;
}
Run Code Online (Sandbox Code Playgroud)

我将我的类设置为Interface Builder中的委托和数据源.
numberOfRowsInTableView被调用但tableView:viewForTableColumn:row:未被调用.

如果我加

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex{
    return @"toto";
}
Run Code Online (Sandbox Code Playgroud)

这个被称为.

如果我理解,tableView:viewForTableColumn:row:则调用基于视图的表,tableView:objectValueForTableColumn:row:并调用基于单元格的表.

如何定义我的表是基于视图的?

编辑: 好的...所以问题是我使用10.6和tableView:viewForTableColumn:row:从10.7开始可用.所以它意味着在10.7之前只有基于单元格的表格?

Mon*_*olo 5

在 Interface Builder 中,在 Attributes inspector 窗格 (Cmd-Opt-4) 中,将 table view type 设置为 View Based。默认情况下它是基于单元格的。

您必须在左侧对象视图中或通过在编辑器中单击来选择表格视图。请注意,第一次在编辑器中单击它时,它将选择滚动视图,因此您必须第二次单击它才能选择表格视图对象。

我相信 OS X 10.7 SDK 需要 Xcode 4.3 或更新版本,因此基于视图的表视图可用。