我正在研究一个Cocoa应用程序,该应用程序需要多个滑块来控制数个“通道”数据的值。我想创建应用程序,以便所有通道数据都以整数形式存储在单个数组中。然后每个滑块将绑定到数组中的单个元素。这可能吗?如果是这样,我需要使用一个NSMutableArray或我可以逃脱一个标准的C数组?可可绑定:将NSSlider绑定到数组中的单个值
回答
你应该用Cocoa Bindings Programming Topics Guide花几个小时。最好的方法是使用中间控制器(如NSObjectController,NSArrayController,NSDictionaryController或NSTreeController)。
然后考虑:您是否总是有固定数量的频道,或者您是否需要在运行时添加/删除频道?
因为你没有包含任何关于频道的描述,你如何定义它(你自己的类或者像字典这样的基本的可可容器)或者它将如何使用,或者你想添加/动态删除频道,我能给你的最好的例子就是最基本的例子。
简单的例子
在最简单的情况下,(你有固定的渠道和渠道无非是一些“foo”值的容器更多),使用NSDictionaryController并勾选“准备内容”框(创建自己的字典进行存储)。你将把一个NSDictionaryController拖到你的IB XIB中。对此,您将为这些“频道”中的每一个添加诸如“channelAFoo”,“channelBFoo”等的键。
为每个通道添加一个滑块。将其绑定到与“选择”(缺省值)和“channelAFoo”的模型关键路径的用于信道的滑块,“channelBFoo”为信道B滑块控制器密钥字典控制器等
更多复杂的情况
一个更复杂的情况下会涉及一些可变数组(如您怀疑的)和一个带有该可变数组的NSArrayController作为其内容。您可以使用一个集合视图(NSCollectionView/Item),其中您的NSCollectionViewItem原型包含滑块(也可以是漂亮的通道名称,颜色代码等等)。当通道被添加到集合中或从集合中移除时(通过数组控制器进行通道以便记录更改),将为该通道创建(或移除)原型的副本,并将其控件绑定到其RepresentObject的某个键路径您的“频道”对象的一个实例)。
结论
如果你想更具体的建议,你必须是一个很多关于你的设计和意图更加具体。请记住,这是一种先进的Cocoa技术,您应该计划花费大量时间阅读文档,以便了解Bindings的工作原理。这将帮助你将问题分解成更小,更具体的问题(所以答案可以更合理地集中)。
- 1. 使用nil minValue将NSSlider绑定到NSTextField?
- 2. 使用NSSlider绑定CIVector的组件
- 3. 可可绑定单个对象从一个数组
- 4. 将单个NSCell绑定到多个值
- 5. 数组中的绑定值?
- 6. 将DataGridViewCheckBoxColumn绑定到布尔值数组
- 7. 将单个值绑定到aspx页面
- 8. 可可绑定 - 试图将NSMenuItem的状态绑定到我的自定义BOOL
- 9. Xamarin将绑定数据绑定到ListView中的网格组件
- 10. Vue.js v绑定到数组中的值
- 11. 将控件绑定到WPF中的一个集合/数组中的单个值
- 12. 将值绑定到Perl中的函数
- 13. Groovy可绑定默认值?
- 14. WPF XAML - 绑定数组可变指数
- 15. 我可以将多个控件绑定到单个类吗?
- 16. 将值绑定到GridView的
- 17. 将Swing JList绑定到数组中
- 18. 组可见=假到ASP:绑定列
- 19. 将值绑定到组合框动态
- 20. 将数组绑定到组合框
- 21. 刷新可可绑定 - NSArrayController - 组合框
- 22. 我可以使用默认的模型绑定器将多个表单绑定到单个模型吗?
- 23. 绑定绑定函数并将其解除绑定到事件
- 24. 是否可以将liistbox选定值绑定到mediaelement源wpf
- 25. 将可见性绑定到WPF dataGrid中的bool值
- 26. Silverlight将列绑定到数组项目可编辑
- 27. 可以将重复子元素绑定到数组项吗?
- 28. 如何将多个值绑定到WP7中的单个TextBlock.Text?
- 29. 我可以将WPF TreeView绑定到单个根节点吗?
- 30. 绑定到NSArrayController的可编辑表视图绑定到NSUserDefaultsController
转述了这个结论,这听起来是无意识的说教。 :-) – 2010-08-17 14:39:14
感谢您的建议。我正在创建一个与我正在设计的硬件控制器接口的照明控制应用程序。程序中的每个通道控制某个灯光的亮度。我决定采用更复杂的案例,因为我喜欢它提供的灵活性,似乎可以更容易地引用各个渠道(可能有不少)。刚刚计算出整个CollectionView昨晚。现在是时候了解其他细节。 – 2010-08-17 15:59:01
@詹姆斯,你看看http://www.usbdmx.com/我有一段时间没有真正看过它,但曾经有一段时间,我正在帮助开发照明控制应用程序的开源框架(我放弃了对我几年前的尝试)。 – theMikeSwan 2010-08-25 21:42:15