Cocoa:获取表格视图单元格以发送操作消息

时间:2010-03-28 00:23:14

标签: objective-c cocoa nstableview

我真的无法让Cocoa Table View单元格发送动作消息。

在最基本的层面上,在IB中有一个为NSTextViewCell对象分配的动作,在编辑和按下后返回没有任何反应。

所以我有一个连接到NSTextViewCell的IBOutlet,并且一直在尝试使用NSActionCell消息。但表格视图似乎只是忽略它们。

我也尝试了NSTextViewCell的子类化,但是我看到的方法看起来都像是要从某个地方向对象传递值,而不是从对象内部返回一个值来配置它的行为。

我对编程和Cocoa都很陌生 - 有人可以解释每一件需要被覆盖的东西,以及如何以及在哪里做到这一点?

2 个答案:

答案 0 :(得分:3)

AFAIK,NSTableView中的单元格不会向您的应用程序发送操作消息,它们会被发送到NSTableView,以便更新其数据。 NSTableView本身试图非常聪明并直接更新您的数据,而不仅仅是告诉您更改的内容,因此根据您要执行的操作以及该表的数据源,您有几个选项。

如果你使用NSTableViewDataSource对象填充表格,那很简单;只需实现tableView:setObjectValue:forTableColumn:row:,每次编辑某些内容时,NSTableView都会调用它。

如果您正在使用Cocoa数据绑定(例如,使用NSArrayController将对象数组绑定到表中),那么只要所有内容都正确连接,数据就应该在源对象中自动更新在编辑表格时。如果您需要采取特殊措施,那么您可以在数据类的属性设置器中执行任何操作。

答案 1 :(得分:0)

我还没有尝试过,但可以工作......

NSCell *cellYouWant = [tableView preparedCellAtColumn:tableView.clickedColumn row:tableView.clickedRow];