问题标签 [nscombobox]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2187 浏览

cocoa - Cocoa-Bindings:将 NSComboBox 选择绑定到 NSObjectController 中的字段

在我的应用程序中,我有一个 NSObjectController 绑定到用户界面上的所有控件。到目前为止,这工作正常。我唯一的问题是将 NSComboBox 的选择绑定到同一个 ObjectController。据我今天发现,ComboBox 的值始终是一个字符串,因此 OBjectController 类中的字段也是一个 NSString.Sounds 对我来说很容易但不起作用。

我总是得到一个“ ......类与键的键值编码不兼容......

ComboBox 本身中的项目来自另一个控制器,一个 NSArrayController。但这部分工作正常。Array 中的所有项目都是 ComboBox 中的项目。我遇到的问题是将选择放入 ObjectController。

0 投票
1 回答
3296 浏览

objective-c - 无法从 NSComboBox 检索选定的索引

我试图通过使用 indexOfSelectedItem 获取具有数据源的 NSComboBox 的选定索引。

idx 将始终返回 -1;

即使在 InterfaceBuilder 中为 NSComboBox 定义内部列表时,也会得到相同的结果。

有没有其他方法可以检索选定的索引?

0 投票
1 回答
9634 浏览

objective-c - NSComboBox - 获取选择的信息和 NSComboBoxDataSource

对于我的一生,我一直被难住NSComboBox

我创建了一个符合NSComboBoxDataSource协议的对象,并实现了:

我将 my 的实例设置NSComboBox为使用数据源,并将此对象设置为源。这很好用,我的实现返回项目的数量,并返回NSString特定索引处的项目的值。

然后我决定在选择某事时我想做某事,这就是我的问题开始的地方。协议中没有明显的方法可以覆盖NSComboBoxDataSource来处理组合框中项目的选择。

所以,我也让我的对象符合NSComboBoxDelegate并实现:

不幸的是,与NSTableView选择不同,通知的对象NSComboBox不是所选项目的对象。“好”我告诉自己,我会调用NSComboBox方法:

这应该返回被选中的项目,我可以从那里开始。usesDataSource但是,只有在设置为时才调用该方法NO,这不是我的情况。当我使用它时,警告开始出现。

所以,我的问题是,NSComboBox当您使用数据源时,处理选择的正确方法是什么?

0 投票
2 回答
451 浏览

cocoa - 让 NSComboBox 像 HTML Combo 一样工作

是否可以让 NSComboBox 中显示的值与使用 objectValueOfSelectedItem 检索的值不同?

那么,它会显示一个对象的字符串名称,但返回的是 int recordId 而不是字符串名称?除了使用选定的索引并从源数组中获取它之外,当然......

0 投票
1 回答
2634 浏览

cocoa - 与 Core Data 一起使用的 NSComboBox 的正确绑定是什么

想象一下,如果您将创建一个包含两个实体(员工和部门)的 Core Data 应用程序。员工与部门(部门)是一对一的关系,反之则是一对多的关系(员工)。在 UI 中,您可以选择单个 Employee 实体并在详细信息区域中编辑详细信息(当然还有其他属性,还有用于添加和编辑部门实体的 UI)。使用弹出按钮时,绑定是:

内容=PopUpArrayController.arrangedObjects
内容值= PopUpArrayController.arrangedObjects.name(名称是NSString)
选定对象=EmployeeArrayController.selection.department.name

这允许在弹出菜单中查看所有部门,正确选择当前员工的部门,并允许按预期更改该部门。目标是为 NSComboBox 更改此设置,以便用户可以通过 Tab 键切换到该框并键入部门名称,而无需切换到鼠标。我尝试了许多不同的绑定来实现这一点。我什至用这些绑定让它运行一次:

内容=PopUpArrayController.arrangedObjects.name
价值=EmployeeArrayController.selection.department.name

至少有一次按预期工作(当输入的文本与任何现有部门都不匹配时,它甚至添加了一个新部门)。但是,现在它将显示可用的部门并自动完成,但当组合框中的值发生更改时,它不会使用正确的值更新模型。如果部门通过弹出窗口设置或更改,则正确的部门将显示在组合框中。

有谁知道我错过了什么?谢谢。

0 投票
1 回答
3682 浏览

objective-c - 如何通过 KVC 设置 NSComboBox 的值?

我在 Interface Builder 中创建了几个 NSComboBoxes,一个以编程方式创建。

在 Interface Builder 中创建的 NSComboBoxes 是完美的。我将他们的值绑定到共享用户默认控制器,当他们的视图打开时,他们正以正确的值坐在那里。重要的是,这个值在 NSComboBox 中显示为“普通”文本。换句话说,该值未显示为选中状态。这就是我要的。

对于以编程方式创建的 NSComboBox,我使用 selectItemAtIndex:0 设置值。当我这样做时,选择了正确的项目——但文本似乎被选中。即,它突出显示和一切。我不想要这个。以下是我尝试过的解决方法:

(i) 获取字段编辑器并将插入点设置到文本的末尾。这不起作用,但奇怪的是,字段编辑器的字符串在执行此操作时为 nil 或为空。我不确定这是否是字段编辑器的正确行为。

(ii) 尝试其他各种设置组合框值的方法,例如 setObjectValue、takeStringValueFrom 等。

(iii) 最后,也是最令人沮丧的是,我尝试使用 [myComboBox setValue:@"The Default Item" forKey:@"value"] 设置 NSComboBox 的值;objc_exception_throw 失败,大概是因为没有这样的 KVC 密钥。但我知道组合框的值可以通过 KVO 设置,因为它可以在界面生成器中使用!我猜我不知道正确的关键路径。我尝试使用自省枚举所有属性,但我无法让代码正常工作(objc_property_t 不在预期的标头中)。

所以,我有两个问题:

首先,有谁知道如何以编程方式为 NSComboBox 设置默认值,以便不选择框中的文本?我将不遗余力地做到这一点,包括一个新的 NSComboBoxCell 子类,如果涉及到的话。

其次,有人能告诉我 IB 使用什么键或键路径来设置 NSComboBox 的值吗?或者,为什么我这样做的努力失败了?

我已经为此工作了好几个小时,我真的很沮丧!


谢谢,必须注册!很高兴能解决这个问题。一点后续:

(i) 文本的选择肯定是由焦点引起的。调用 setRefusesFirstResponder:YES 可以解决问题。不幸的是,窗口真的想专注于这个组合框,因为将 rejectsFirstResponder 设置回 NO(稍后,在窗口启动之后)会导致再次选择文本(如果他愿意,我确实希望用户能够专注于这个框)。因此,就我而言,最终的解决方案是调用 [window makeFirstResponder:otherControl]。奇怪的是,虽然 [window makeFirstResponder:nil] 不起作用。任何想法为什么?

(ii) 感谢您指出绑定和属性之间的区别。我在研究这个问题时学到了很多东西。一方面,我了解到您可以通过调用 - (NSArray *)exposedBindings 来获取绑定列表,它对于 NSComboBox 返回 (fontSize, alignment, toolTip, fontName, enabled, contentValues, fontFamilyName, font, hidden, fontItalic, textColor, value , 内容, 可编辑, fontBold)。其次,我能够使用 [myComboBox bind:@"value" toObject:[NSMutableString stringWithString:@"defaultValue"] withKeyPath:@"string" options:nil] 设置值,其中 NSMutableString 上有一个类别,它变成“字符串”到一个属性。最后,这实际上并不能解决文本选择“问题”。

所以我剩下的唯一问题可能是为什么 [window makeFirstResponder:nil] 不能将焦点从组合框上移开。不是超级重要,但如果有人有想法,我会很好奇。

0 投票
1 回答
327 浏览

cocoa - 轻松将 NSComboBox 转换为 NSTextField

我有一个 NSComboBox,我想知道是否有一种简单的方法可以将其转换为普通的 NSTextField?考虑到 NSCombBox 是 NSTextField 的子类,我认为有一种简单的方法可以打开/关闭它,但我无法弄清楚。

0 投票
1 回答
202 浏览

cocoa - NOOB 从代码中获取结果的问题(更具体地说是使用 NSComboBox)

我知道这可能是一个简单的问题,但这是我绞尽脑汁想弄清楚的问题:

我知道这个:

}

将返回提供的索引处的项目。我的问题是,我需要使用什么代码来调用这个例程?

我试过这样的事情:

但我得到一个“错误:'comboBox'未声明”

谁能帮我解决我搞砸的概念?

0 投票
2 回答
503 浏览

objective-c - 如何使 NSComboBox 不可见或透明

您好,我正在尝试使 NSComboBox 透明,但它不起作用。我正在尝试使用以下方法:

但似乎 NSComboBox 没有实现 setTransparent,NSComboBoxCell 和 NSTextField 也没有。期待您的建议和解答。

问候乌梅尔

0 投票
7 回答
3956 浏览

objective-c - 如何以编程方式打开 NSComboBox 的列表?

我已经有一段时间了..我认为这应该是一件容易的事,但事实并非如此 =D

我想要做的是在用户单击组合框时显示组合框的列表,但不是专门在按钮中。

任何想法?提前致谢!