2014-03-06 127 views
0

我有一个奇怪的问题,NSTableView,因为当我将项目从xCode3升级到xCode5升级项目后:NSTableVIew在删除现有的行后没有正确更新

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

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

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

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

代码在以前版本的xCode中完美工作,我怀疑在xib文件中升级之后可能会更改某些内容,但我不知道它是什么。

感谢

回答

0

要更新的tableView,使用

[yourTableViewOutletName reloadData];

删除行后。

+0

是啊,我已经试过了,但它不工作。对我而言,奇怪的是,对于任何其他操作,该表已正确更新,但不是用于删除行。 – aneuryzm

0

您使用的两条线中的第一条对我来说没有多大意义(但我无法真正了解,因为在该行中,remove消息正在发送到要删除的对象,可能这很重要在你的应用程序中),无论如何,它似乎没有涉及从阵列中删除对象。

你给的资料很少,所以很难说肯定的,但这里有一对夫妇认为检查:

  1. 第二行只应与选定的对象。如果要以编程方式删除未选择的对象,则此方法不起作用(例如,应使用removeObjectremoveObjectAtArrangedObjectIndex:)。
  2. 如果您使用的是核心数据,则可以考虑查看documentation以了解可能相关的一些注释。
  3. 检查你的“删除”按钮被绑定到NSArrayController的正确的(除非你手动删除)
+0

是的,我选择之前的项目将其删除,我正在手动删除(从上面的代码中可以看到)。我想强调升级到xCode5之前一切正常,并且问题在于刷新表(该对象从arrayController正确删除)。 – aneuryzm

相关问题