gpt4 book ai didi

cocoa - NSArrayController:如何以编程方式清除选择?

转载 作者:行者123 更新时间:2023-12-03 16:12:51 25 4
gpt4 key购买 nike

非常简单的问题让我抓狂:以编程方式清除 NSArrayController 选择的正确方法是什么?

我正在设计一个包含以下组件的 View :

  • NSArrayController *controller1:绑定(bind)到对象数组
  • NSPopUpView view1:绑定(bind)到controller1.arrangedObjects的内容;值绑定(bind)到controller1.selection;已选择“插入空占位符”
  • NSArrayController *controller2:绑定(bind)到存储在controller1.selection中的数组
  • NSPopupView view2:绑定(bind)到controller2.arrangedObjects的内容;值绑定(bind)到controller2.selection;已选择“插入空占位符”

最初,view1 的内容被填充; controller1 和controller2 的选择值为nil; view1 和 view2 显示空占位符。选择controller1 会导致controller1 的选择发生变化并填充view2 的内容。一切都好。

我想实现一个清除按钮来清除controller1的选择,由于绑定(bind),它也应该清除controller2的选择并将view1和view2重置为空占位符。对于我的一生,我无法找出这个非常简单的函数的正确代码。更改controller1 的选择无法更新view1 中显示的值。更糟糕的是,以编程方式更改controller1选择会导致controller2中发生奇怪的事情:进一步选择view1中的值无法对view2产生任何影响。

我尝试过的事情:

  • 使用 [NSArray new] 调用controller1 的 SetSelectedObjects 方法。

  • 使用null调用controller1的SetSelectedObjects方法。

  • 使用 NSNotFound 调用controller1的SetSelectedIndex方法。

  • 使用controller1的SelectedIndex属性调用controller1的RemoveSelectedIndex方法。

  • 在 Cocoa NSArrayController 文档中查找任何类方法或清除选择值的建议。那里什么也没有——甚至没有提到这是可取的,更不用说如何实现它了。

有什么想法吗?谢谢...

最佳答案

根据Apples Developer documentation这可以使用 setSelectionIndexes 来完成:

To deselect all indexes, pass an empty index set.

目标-C:

[arrayController setSelectionIndexes:[NSIndexSet indexSet]];

swift :

arrayController.setSelectionIndexes( NSIndexSet() )

关于cocoa - NSArrayController:如何以编程方式清除选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082639/

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