从基于视图的表视图中删除行时,不会发送任何通知

时间:2014-05-27 18:04:29

标签: macos cocoa xcode5 nstableview

我正在使用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 个答案:

答案 0 :(得分:0)

一切都很顺利;经过几个小时的顽强谷歌搜索,我找到了解决方案。

似乎需要一个模糊的绑定来保持表视图选择与数组控制器同步。

表格视图Selection Indexes必须绑定到阵列控制器selectionIndexes

enter image description here

请参阅cocoabuilder.com上的View based NSTableView and NSArrayController not in sync