gpt4 book ai didi

cocoa - 当 View 选择更改时,自定义 NSViewController 表示的对象不会更新

转载 作者:行者123 更新时间:2023-12-03 17:31:54 31 4
gpt4 key购买 nike

我有一个自定义 NSViewController,它也是一个 NSOutlineViewDataSource。我还有一个窗口,其中 NSOutlineView 绑定(bind)到我的 View Controller 的实例作为数据源,并且 NSOutlineView 绑定(bind)到自定义 View Controller 的 view: 属性。

Controller 很好地填充了轮廓 View 。但是, View 中的选择不会自动更新 Controller 的 returnedObject 属性。唯一似乎触发 returnedObject 更改的事情是当我直接调用 setRepresentedObject: 时...这有点违背了目的。

知道为什么会这样吗?表示对象应该自动更新,对吧?提前致谢...

最佳答案

如果我理解你的问题,那么你就不明白 representedObject 的用途。 representedObject 是表示 View Controller 正在显示的所有数据的模型对象。它不是显示内容集合的 View 的当前选择。自定义顶级 View Controller 的representedObject将是一个NSArray或其他集合类,其中包含您在 View Controller 中显示的数据集。如果正确使用模式,更改自定义顶级 View Controller 的 representedObject 应该会产生换出全新数据集的效果。

通常,表格类型 View 中各个元素的 View Controller 都有自己的representedObject,并且该对象不会更改。例如,如果您使用的是 NSCollectionView, View 中的每个元素都由 NSCollectionViewItem 控制,它是 NSViewController 的子类。每个 NSCollectionViewItemrepresentedObject 告诉它在它的小 View 中显示什么数据。

NSOutlineView 及其父类(super class) NSTableView 的不同之处在于,它们的单元格通常是 NSCells 而不是完整的 NSViews除非您选择在 Mac OS X 10.7 或更高版本中以这种方式使用它们。即使在这种情况下,通常也不会使用 NSViewController 子类来管理每个单元格。因此, View Controller representedObject 模式不用于用户选择的单个元素的级别。如果您想要跟踪 NSOutlineView 的选择,有许多 NSTableView 方法可以让您执行此操作。

关于cocoa - 当 View 选择更改时,自定义 NSViewController 表示的对象不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12224831/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com