2009-09-08 35 views
0

我有一个NSTableView使用控制器对象作为数据源显示的NIB。我实现了NSTableView非正式协议。NSTableView不会增加表中元素的数量?

这NSTableView的从核心数据获取其值。我启动应用程序,加载我在XML中的所有值,然后显示它们。

我的问题是,在NSTableView的似乎没有任何新行添加到表的末尾。如果我在永久存储中没有值的情况下启动应用程序,并添加另一个值(添加值可以看到它们被保存到XML),那么表视图会忽略新值。

如果我添加一个值,我知道会走到表的末尾(内容按字母顺序排列),我不会看到新的值。

如果我和我知道的值不会到表的末尾,值会被添加,我会在表格中看到它,但表格中的最后一个值将被推出并消失。我注意到 - (int)numberOfRowsInTableView:(NSTableView *)tv只在应用程序启动时调用,而不是当我做[tableView reloadData]时调用。什么原因导致此事件被解雇?我试图在tableView上调用reloadData之前启动它,但似乎不起作用。

任何想法可能会导致此?

有没有人遇到类似这样的事情?任何线索可能是什么?

+1

从您的问题中不清楚:您是使用绑定还是NSTableDataSource协议来填充NSTableView?你必须选择一个或另一个。如果你使用核心数据,你应该使用绑定。 – Alex 2009-09-08 16:57:29

+0

我正在使用NSTableDataSource协议。我没有使用绑定,因为我需要在屏幕上显示数据之前做一些魔术。 – ruipacheco 2009-09-08 17:31:06

+0

什么是魔法?我猜想它更像是一个NSValueTransformer子类或NSFormatter双胞胎的一个域,但我不能肯定地不知道你在做什么。 – 2009-09-08 18:43:11

回答

0

Alex的评论让我回顾了代码,特别是在Interface Builder中的绑定。原来,我已经设置了表和我的控制器对象之间的绑定,并实现了NSTableDataSource。

我已经删除了所有绑定,只实现了NSTableDataSource协议。

+0

我会推荐走另一条路。核心数据和绑定旨在协同工作。 – 2009-09-08 20:16:55