tableView:viewForTableColumn:row:未调用

时间:2012-07-07 12:01:18

标签: cocoa nstableview appkit

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

所以我实施

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

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

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

如果我添加

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

这个叫做。

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

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

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

1 个答案:

答案 0 :(得分:4)

在Interface Builder的“属性”检查器窗格(Cmd-Opt-4)中,将表视图类型设置为“基于视图”。它默认为基于单元格。

您必须在左侧对象视图中选择表视图,或者在编辑器中单击它。请注意,第一次在编辑器中单击它时,它将选择滚动视图,因此您必须再次单击它以使其选择表视图对象。

我相信您需要Xcode 4.3或更新版本的OS X 10.7 SDK,以及基于视图的表格视图,才能使用。