NSTableView绑定如何添加行

时间:2011-05-28 21:39:59

标签: cocoa binding nstableview add

我正在使用此界面处理应用程序(抱歉语言为荷兰语):

http://www.flickr.com/photos/pluueer/5756159100/

NSTableView下的Add函数(包括四个NSTextFields)将在某一天移动到工作表,但是现在这很好。我根据教程(http://cocoadevcentral.com/articles/000080.php)设置了绑定,但教程没有提供如何以我想要的方式添加行(只添加一个空行,你需要在NSTableView中编辑。

我在'Voeg toe'(荷兰语为'Add')按钮和Array Controller之间建立了连接。但点击后我收到消息:

2011-05-28 23:37:56.149 Hop Calc[4345:a0f] -[__NSPlaceholderDictionary initWithObjects:forKeys:]: number of objects (0) not equal to number of keys (4)

这是有道理的,因为我没有实现任何添加行的功能,但我只是不知道如何。

1 个答案:

答案 0 :(得分:5)

“向表中添加一行”是错误的思考方式。您的表表示集合,控制器向表提供信息,在表(视图)和集合(模型)之间进行调解。由于您提到了绑定,因此该集合可能由NSArrayController管理。因此,您希望将新对象(您的阵列控制器管理的对象)添加到阵列控制器的内容数组中。

最简单的方法:将Add按钮连接到NSArrayController的-add:action。它会添加一个空行。

如果您想要更多控制,请在某些控制器中将“添加”按钮连接到您自己的自定义操作。该操作将创建一个由数组控制器表示的任何实例,预填充它(或任何你想要做的事情),然后,使用它保存到NSArrayController的插座,将调用数组控制器的-addObject:方法来添加对象(可能的a -rearrangeObjects调用让数组控制器重新排序其内容。)