Cocoa 是否为NSPopupButton设置默认选择?

Cocoa 是否为NSPopupButton设置默认选择?,cocoa,default,cocoa-bindings,nspopupbutton,Cocoa,Default,Cocoa Bindings,Nspopupbutton,是否可以在NSPopupButton上设置默认选择?我有一个允许用户选择他们想要设置的服务器类型的按钮,但是由于NSPopupButton总是显示第一项,如果这是他们想要的类型,他们可能会忽略它。但是,即使正在显示该项,调用-selectedItem也会返回(null)。如果用户先从菜单中选择一个项目,一切都会正常工作 按钮的内容和内容值绑定到同一个数组控制器,而该数组控制器又绑定到NSDictionary的keys属性。我尝试将selectedIndex绑定到控制器中的一个变量,并在代码中更新

是否可以在NSPopupButton上设置默认选择?我有一个允许用户选择他们想要设置的服务器类型的按钮,但是由于NSPopupButton总是显示第一项,如果这是他们想要的类型,他们可能会忽略它。但是,即使正在显示该项,调用-selectedItem也会返回(null)。如果用户先从菜单中选择一个项目,一切都会正常工作

按钮的内容和内容值绑定到同一个数组控制器,而该数组控制器又绑定到NSDictionary的keys属性。我尝试将selectedIndex绑定到控制器中的一个变量,并在代码中更新该变量,但没有效果。(我可能只是绑定错误…)默认情况下如何选择第一项

提前谢谢

SphereCat1

使用绑定时,您不需要也不应该直接从视图中获取任何模型信息,无论是模型本身还是选择状态。与拥有模型和选定索引的控制器交谈

请注意,“索引”对NSDictionary没有任何意义,
keys
不是NSDictionary的属性。(事实上,如果您得到一个异常,我不会感到惊讶,因为您的字典中没有键“keys”的对象。)它是一个方法,而不是访问器类型,因此虽然您可以使用键值编码向字典询问该方法的值,但您不应该这样做


您应该做的是表示服务器类型,并保存这些类型的数组,并将数组控制器的内容绑定到值为该数组的属性。将弹出按钮的
contentValues
绑定到模型对象的name属性,该属性应包含每种服务器类型的本地化名称。

使用绑定时,您不需要也不应该直接从视图中获取任何模型信息,也不应该直接获取模型本身或选择状态。与拥有模型和选定索引的控制器交谈

请注意,“索引”对NSDictionary没有任何意义,
keys
不是NSDictionary的属性。(事实上,如果您得到一个异常,我不会感到惊讶,因为您的字典中没有键“keys”的对象。)它是一个方法,而不是访问器类型,因此虽然您可以使用键值编码向字典询问该方法的值,但您不应该这样做

您应该做的是表示服务器类型,并保存这些类型的数组,并将数组控制器的内容绑定到值为该数组的属性。将弹出按钮的
contentValues
绑定到模型对象的名称属性,该属性应包含每个服务器类型的本地化名称