升级项目后:删除现有行后 NSTableVIew 无法正确更新
Posted
技术标签:
【中文标题】升级项目后:删除现有行后 NSTableVIew 无法正确更新【英文标题】:After upgrading a project: NSTableVIew doesn't update correctly after deleting an existing row 【发布时间】:2014-03-06 15:40:12 【问题描述】:自从我将项目从 xCode3
升级到 xCode5
后,NSTableView
出现了奇怪的问题。
如果我添加一个新行,视图会正确更新并显示新行。但是,如果我删除现有行,tableview 不会更新,我需要关闭并重新打开窗口才能查看更新的项目列表。
用作数据源的NSTableView
和NSArrayController
都包含在一个xib 文件中。要添加和删除行,我通过添加和删除对象对数组控制器进行操作。这是删除项目的代码:
[[[self creatorsArrayController] selectedObjects] makeObjectsPerformSelector:@selector(remove)];
[[self creatorsArrayController] remove:sender];
显然老程序员出于某种原因同时使用了这两种方法。我也尝试删除这两行之一,但没有任何变化。
该代码在以前版本的 xCode 中运行良好,我怀疑在 xib 文件中升级后可能发生了一些变化,但我不知道它是什么。
谢谢
【问题讨论】:
【参考方案1】:要更新 tableView,请使用
[yourTableViewOutletName reloadData];
删除一行之后。
【讨论】:
是的,我已经尝试过了,但它不起作用。令我感到奇怪的是,表格已针对任何其他操作正确更新,但不适用于删除行。【参考方案2】:您使用的两行中的第一行对我来说没有多大意义(但我真的不知道,因为在那一行中,remove
消息被发送到被删除的对象,也许那是在您的应用程序中很重要),无论如何它似乎与从数组中删除对象无关。
您提供的信息很少,因此很难确定,但这里有一些想法需要检查:
-
第二行应该只适用于选定的对象。如果您想以编程方式删除未选择的对象,则此方法不起作用(例如,您应该使用
removeObject
或 removeObjectAtArrangedObjectIndex:
)。
如果您使用的是 Core Data,您可能会考虑查看documentation 以获取一些可能相关的注释。
检查您的“删除”按钮是否正确绑定到 NSArrayController(除非您手动删除)
【讨论】:
是的,我选择了之前的项目将其删除,并且我正在手动删除(从上面的代码中可以看到)。我想强调一下,在升级到 xCode5 之前一切正常,问题在于刷新表(该对象已从 arrayController 中正确删除)。以上是关于升级项目后:删除现有行后 NSTableVIew 无法正确更新的主要内容,如果未能解决你的问题,请参考以下文章