我的 UI 没有在我期望的时候更新。
该应用程序使用类似于 iTunes 的视图显示“项目”——左侧的源列表允许您在右侧过滤列表 (NSTableView)。我的过滤器在检查任何简单字段(如名称、字符串)时会正确更新,但不适用于数组(如标签)。
我正在从我的一个对象中删除一个标签(从一个名为“tags”的 NSMutableArray 字段中),我希望它从列表中消失,因为它不再匹配绑定到我的表的 NSArrayController 的谓词。
项目浏览器.mm:
self.filter = [NSPredicate predicateWithFormat:@"%@ IN %K",
selectedTag,
@"tags"];
项目.mm:
[self willChangeValueForKey:@"tags"];
[tags removeAllObjects];
[self didChangeValueForKey:@"tags"];
我也试过这个,但结果是一样的:
[[self mutableArrayValueForKey:@"tags"] removeAllObjects];
界面生成器设置:
- ProjectBrowser 对象是 XIB 的文件所有者
- NSArrayController(项目控制器)的内容数组绑定到“文件所有者”.projects
- 项目控制器的过滤谓词绑定到“文件的所有者”.filter
- NSTableView 的列绑定到“项目控制器”.name