连接到专用控制器时未调用NSTableView委托

时间:2012-07-25 00:32:58

标签: cocoa nstableview

为了能够自定义我的一些NSTableview的行为,我创建了这个新类作为表视图的控制器。

@interface aTableViewController : NSObject<NSTableViewDelegate>

@end
@implementation aTableViewController    
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
    return 1;
}

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

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{}

@end

现有的表视图绑定到NSArrayController以获取数据,工作得很漂亮。我使用NSObject来引用IB中的这个aTableViewController,并将表视图的委托连接到此控制器对象。但是,这些代表都没有被召集过。

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:3)

  

我的NSTableview是基于视图而不是基于单元格的。这就是为什么tableView:willDisplayCell:forTableColumn:row:永远不会被调用

对于基于视图的tableview,您可以使用

func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
}

答案 1 :(得分:1)

我发布了您发布的内容的几个问题。在@interface代码中你有aTableViewController,而在@implementation代码中你有WorkspaceTableViewController。其中一个是错字还是这两个不同的类?

其次,控制器中的方法是数据源方法,而不是委托方法。如果使用绑定来填充表,则不会调用这些方法。

相关问题