从基于视图的表视图中删除行时不发送通知
Posted
技术标签:
【中文标题】从基于视图的表视图中删除行时不发送通知【英文标题】:No notification sent when a row is deleted from a view-based table view 【发布时间】:2014-05-27 18:04:28 【问题描述】:我正在使用 Xcode 5 开发一个简单的核心数据应用程序,该应用程序具有表格视图和用于添加/删除行的按钮。我从 基于单元格的 表格视图开始。视图委托接收 tableViewSelectionDidChange 通知,以便在未选择任何行时禁用删除按钮:
- (void)tableViewSelectionDidChange:(NSNotification *)notification
// enable/disable removeButton according to rows selected
[removeButton setEnabled:([tableView numberOfSelectedRows] ? YES : NO)];
NSLog(@"numberOfSelectedRows: %li", [tableView numberOfSelectedRows]);
这按预期工作。
然后,我将表格视图更改为 基于视图 模式,以便将更多数据单元格添加到行中。这就是问题所在。我单击一行来选择它——删除按钮已启用。单击按钮 - 该行被删除,但未发送通知,因此该按钮仍处于启用状态,即使没有突出显示任何行。有趣的是,当我再次单击删除时,另一行被删除了!我被难住了。 SO上没有提到这个问题,谷歌也没有帮助。
有什么想法吗?你可以在这里下载两个版本:bitpals.de/cloudlock.zip
【问题讨论】:
【参考方案1】:现在一切都好;经过数小时顽强的谷歌搜索,我找到了解决方案。
似乎需要一个模糊的绑定来保持表格视图选择与数组控制器同步。
表视图的Selection Indexes
必须绑定到数组控制器selectionIndexes
:
在 cocoabuilder.com 上查看 View based NSTableView and NSArrayController not in sync。
【讨论】:
以上是关于从基于视图的表视图中删除行时不发送通知的主要内容,如果未能解决你的问题,请参考以下文章