升级项目后:删除现有行后NSTableVIew无法正确更新

时间:2014-03-06 15:40:13

标签: objective-c macos cocoa xcode5

我对NSTableView的问题很奇怪,因为当我将项目从xCode5升级到xCode3时。

如果我添加新行,则视图会正确更新并显示新行。但是,如果我删除现有行,则表格视图不会更新,我需要关闭并重新打开窗口以查看更新的项目列表。

用作数据源的NSTableViewNSArrayController都包含在xib文件中。要添加和删除行,我通过添加和删除对象来操作数组控制器。这是删除项目的代码:

[[[self creatorsArrayController] selectedObjects] makeObjectsPerformSelector:@selector(remove)];
[[self creatorsArrayController] remove:sender];

显然,旧程序员出于某种原因使用这两种方法。我也尝试删除这两行中的一行,但没有任何改变。

代码在xCode的早期版本中运行得很好,我怀疑在xib文件中升级后可能会有一些更改,但我不能它是什么。

感谢

2 个答案:

答案 0 :(得分:0)

要更新tableView,请使用

[yourTableViewOutletName reloadData];

删除行后

答案 1 :(得分:0)

你正在使用的两行中的第一行对我来说没有多大意义(但我真的不知道,因为在那一行中remove消息被发送到被删除的对象,也许这在你的应用程序中很重要),无论如何它似乎与从数组中删除对象无关。

你提供的信息很少,所以很难确定,但这里有几个想要检查:

  1. 第二行应仅适用于所选对象。如果要以编程方式删除未选中的对象,则此方法不起作用(例如,您应使用removeObjectremoveObjectAtArrangedObjectIndex:。)
  2. 如果您正在使用核心数据,您可以考虑查看documentation以获取可能相关的一些注释。
  3. 检查您的“删除”按钮是否正确绑定到NSArrayController(除非您手动删除)