绑定到NSComboBox

时间:2013-03-04 09:31:30

标签: objective-c cocoa nscombobox

我是Cocoa的新手,我正在Xcode 4.5中开发一个普通的Cocoa桌面应用程序。我需要在NSComboBox中显示值,我必须从NSComboBox检索,但限制是我不应该对IBOutlet进行绑定。

如果我们需要使用阵列控制器,我们可以使用NSArrayController但不能使用IBOutlet

是否有人建议我如何在不使用IBOutlet的情况下执行此任务。

我不想使用IBOutlet因为:

  1. 它减少了代码:假设我们在UI中有15个文本字段,因此您需要有15个 IBOutlet s(如果您正在处理小项目,那么您可以拥有它 当我们实施更大规模的项目时,您最终可能会创建吨 IBOutlet s,除了帮助访问之外什么都不做 来自文本字段的值。

    如果你使用绑定而不是IBOutlet,处理UI很容易,我们假设你有一个带有链接arrayController的表。当你修改了与数组控制器链接的数组时,自动更改会反映在tableView中,你不需要为更新tabelView而烦恼,如果我们使用IBOutlet,我们必须先删掉头来更新内容。每当修改我们在tableView中显示的数据时。

  2. 让开发人员的生活轻松:如果我们使用绑定,绑定对象中发生的任何更改都会立即反映在UI中,我们无需担心UI的更新。

  3. 易于理解的代码:如果我们不必要地使用IBOutlet,我们最终会编写代码来处理视图,更新视图等,以防我们自动使用绑定进行更新。

  4. 据我说。如果我们使用绑定,这是一种很好的做法。

    IBOutlet只是增加代码长度。

    提前谢谢你......

2 个答案:

答案 0 :(得分:1)

如何绑定步骤:

  1. 绘制一个NSComboBox和一个绑定到组合框的NSTextField。

  2. 在组合框中添加Interface Builder中的项目。

  3. 选择组合框。按住 Ctrl 并拖动到NStextField / label并选择 takeStringValueFrom

  4. 就是这样!

    现在你可以建立&运行并检查组合框中的选择更改是否也在文本字段中可见。

答案 1 :(得分:0)

您需要设置组合框委托来处理comboBoxSelectionDidChange方法。

http://www.cocoabuilder.com/archive/cocoa/221619-detecting-when-nscombobox-text-changed-by-list.html