0

我对 Cocoa 很陌生,我正在 Xcode 4.5 中开发一个普通的 Cocoa 桌面应用程序。我需要在其中显示值,NSComboBox并且必须从中检索NSComboBox,但限制是我不应该绑定到IBOutlet.

如果我们需要使用 Array 控制器,我们可以使用NSArrayControllers,但不能使用IBOutlets。

有人会建议我如何在不使用IBOutlets 的情况下执行此任务吗?

我不想使用IBOutlets 因为:

  1. 它减少了代码:假设我们在 UI 中有 15 个文本字段,所以你需要有 15 个 IBOutlets(如果你在做小项目,你可以拥有它,但是当我们实现更大的项目时,你最终可能会创建大量的IBOutlets,除了帮助从文本字段中访问值之外,它什么也没做。

    如果您使用绑定而不是IBOutlet,则处理 UI 很容易,假设您有一个带有链接 arrayController 的表。当修改了数组Controller链接的数组时,自动更改将反映在tableView中,您无需为更新tableView而烦恼,如果我们使用IBOutlet,我们必须从头开始更新内容。每当修改我们在 tableView 中显示的数据时。

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

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

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

IBOutlets 只是增加代码的长度。

先感谢您...

4

2 回答 2

1

绑定步骤:

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

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

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

而已!!!

现在您可以构建和运行并检查组合框中的选择更改在文本字段中是否可见。

于 2013-03-04T09:51:05.430 回答
0

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

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

于 2013-03-05T21:20:47.407 回答