【问题标题】:NSTableView delegate not being called when connect to a dedicated controller连接到专用控制器时未调用 NSTableView 委托
【发布时间】:2012-07-25 00:32:58
【问题描述】:

为了能够自定义我的 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 来获取数据,效果很好。我在 IB 中使用了一个 NSObject 来引用这个 aTableViewController,并将表视图的委托连接到这个控制器对象。然而,这些代表都没有被召唤。

有什么建议吗?谢谢!

【问题讨论】:

  • “我在 IB 中使用 NSObject 来引用这个 aTableViewController”是什么意思?你有没有拖出一个蓝色的立方体,把它的类改成一个TableViewController?
  • @rdelmar 是的,这正是我所做的。

标签: cocoa nstableview


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,这是一个错字,我刚刚纠正了它。 tableView:willDisplayCell:forTableColumn:row: 是一个委托方法,但它也从未被调用...
    • @RobertKang,对不起,我错过了那个,你是对的,那个是委托方法,但你没有那个。尝试在其中放置一个日志语句,看看它是否被调用。我将您的代码复制到一个项目中,并调用了该代码。
    • 感谢您的帮助。我确实在其中放了一个 NSLog,但它也没有被调用。我再次检查,tableViewController 已正确初始化并作为委托连接到 tableview。如果我只是将委托设置为 viewController 本身,则 viewController 中的委托方法可以正常工作。
    • “将委托设置为 viewController 本身”是什么意思?你一开始不就是这么说的吗?你做了什么改变让它工作?
    • 我想我找到了问题所在。我的 NSTableview 是基于视图而不是基于单元格的。这就是为什么 tableView:willDisplayCell:forTableColumn:row: 永远不会被调用....感谢您的帮助!
    猜你喜欢
    • 2017-03-28
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    相关资源
    最近更新 更多