gpt4 book ai didi

cocoa 绑定(bind) : Binding an NSSlider to a single value in an array

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

我正在开发一个 Cocoa 应用程序,该应用程序需要多个 slider 来控制多个数据“ channel ”的值。我想创建应用程序,以便所有 channel 数据都作为整数存储在单个数组中。然后,每个 slider 将绑定(bind)到数组中的单个元素。这有可能吗?如果是这样,我需要使用 NSMutableArray 还是可以使用标准 C 数组?

最佳答案

您应该花几个小时使用 Cocoa Bindings Programming Topics Guide 。最好的方法是使用中间 Controller (例如 NSObjectController、NSArrayController、NSDictionaryController 或 NSTreeController)。

然后考虑一下:您是否始终拥有固定数量的 channel ,还是需要在运行时添加/删除 channel ?

因为你没有包含任何关于 channel 是什么的描述,你如何定义它(你自己的类或只是一些基本的 Cocoa 容器,如字典)或它将如何使用,或者你是否想要添加/删除动态 channel ,我能给你的最好的就是最基本的可能的例子。

简单案例

在最简单的情况下(您有固定的 channel , channel 只不过是某个值“foo”的容器),使用 NSDictionaryController 并选中“准备内容”框(以创建自己的字典进行存储)。您将把一个 NSDictionaryController 拖到您的 IB XIB 中。您将为每个“ channel ”添加“channelAFoo”、“channelBFoo”等键。

为每个 channel 添加一个 slider 。将其绑定(bind)到字典 Controller , Controller 键为“selection”(默认),模型键路径为“channelAFoo”(用于 channel A slider )、“channelBFoo”(用于 channel B slider )等。

更复杂的情况

更复杂的情况将涉及一些可变数组(正如您所怀疑的)和一个以该可变数组作为其内容的 NSArrayController。您可以使用 Collection View (NSCollectionView/Item),其中您的 NSCollectionViewItem 原型(prototype)保存 slider (当您使用它时,可能还有一个漂亮的 channel 名称、颜色代码等)。当从集合中添加/删除 channel 时(通过数组 Controller 执行此操作,以便记录更改),将为该 channel 创建(或删除)原型(prototype)的副本,其控件绑定(bind)到其所表示的对象的某个键路径( “Channel”对象的一个​​实例)。

结论

如果您想要更具体的建议,则必须更具体地说明您的设计和意图。请记住,这是一项先进的 Cocoa 技术,您应该计划花大量时间阅读文档,以便了解 Bindings 的工作原理。这将帮助您将问题分解为更小、更具体的问题(这样答案就可以更加集中)。

关于 cocoa 绑定(bind) : Binding an NSSlider to a single value in an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3497041/

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