我是Cocoa的新手,我正在Xcode 4.5中开发一个普通的Cocoa桌面应用程序。我需要在NSComboBox
中显示值,我必须从NSComboBox
检索,但限制是我不应该对IBOutlet
进行绑定。
如果我们需要使用阵列控制器,我们可以使用NSArrayController
但不能使用IBOutlet
。
是否有人建议我如何在不使用IBOutlet
的情况下执行此任务。
我不想使用IBOutlet
因为:
它减少了代码:假设我们在UI中有15个文本字段,因此您需要有15个
IBOutlet
s(如果您正在处理小项目,那么您可以拥有它
当我们实施更大规模的项目时,您最终可能会创建吨
IBOutlet
s,除了帮助访问之外什么都不做
来自文本字段的值。
如果你使用绑定而不是IBOutlet
,处理UI很容易,我们假设你有一个带有链接arrayController的表。当你修改了与数组控制器链接的数组时,自动更改会反映在tableView中,你不需要为更新tabelView而烦恼,如果我们使用IBOutlet
,我们必须先删掉头来更新内容。每当修改我们在tableView中显示的数据时。
让开发人员的生活轻松:如果我们使用绑定,绑定对象中发生的任何更改都会立即反映在UI中,我们无需担心UI的更新。
易于理解的代码:如果我们不必要地使用IBOutlet
,我们最终会编写代码来处理视图,更新视图等,以防我们自动使用绑定进行更新。
据我说。如果我们使用绑定,这是一种很好的做法。
IBOutlet
只是增加代码长度。
提前谢谢你......
答案 0 :(得分:1)
如何绑定步骤:
绘制一个NSComboBox和一个绑定到组合框的NSTextField。
在组合框中添加Interface Builder中的项目。
选择组合框。按住 Ctrl 并拖动到NStextField / label并选择
takeStringValueFrom
。
就是这样!
现在你可以建立&运行并检查组合框中的选择更改是否也在文本字段中可见。
答案 1 :(得分:0)
您需要设置组合框委托来处理comboBoxSelectionDidChange方法。
http://www.cocoabuilder.com/archive/cocoa/221619-detecting-when-nscombobox-text-changed-by-list.html