objective-c – NSPopUpButton,Bindings和缩短生命周期

objective-c – NSPopUpButton,Bindings和缩短生命周期,第1张

概述我试图掌握使用NSPopUpButton的难度.它是迄今为止在 Cocoa中编程最困难的用户元素(至少就我所发现的而言). 我想到的用例如下: >我有一个名为Port的类,代表一个串口. >其中的属性是名称字段. >在NSPopUpButton中,我想显示每个端口的名称字段. >当用户选择特定端口时,它会在d出窗口中标记为预期的勾选 >当用户随后点击连接按钮时,我可以确定选择了阵列中的哪个端口. 我试图掌握使用NSPopUpbutton的难度.它是迄今为止在 Cocoa中编程最困难的用户元素(至少就我所发现的而言).

我想到的用例如下:

>我有一个名为Port的类,代表一个串口.
>其中的属性是名称字段.
>在NSPopUpbutton中,我想显示每个端口的名称字段.
>当用户选择特定端口时,它会在d出窗口中标记为预期的勾选
>当用户随后点击连接按钮时,我可以确定选择了阵列中的哪个端口.
>我想用绑定来实现这一点,因为我认为一旦我了解它,它将是更优雅的解决方案.

因此,在我的AppController.h中,我期待两个属性,我可以将其创建为属性和合成:

NSMutableArray *allPorts;Port *currentlySelectedPort;

在我的.m中有一个动作:

-(voID)dIDSelectConnect:(ID)sender{    NSLog(@"Selected port name is:%@",[currentlySelectedPort name]);}

在Port.h我有

Nsstring *name;Nsstring *baudrate;... etc ...

我创建了一个简单的项目,其中只包含一个d出窗口(和一个标签),并且跟随各种文章,我已经设法使用元素填充NSMutableArray,然后我使用ArrayController来显示值,然后在选择上设置标签的值(使用对象控制器).但是,尽管这很聪明,但它不适合我试图实现的用例.所以我转到这里寻求帮助

中号

解决方法 好的,与NSPopUpbutton的绑定有点复杂,因为它需要两件事:绑定值,以及选择其中一个值的绑定.更复杂的是,有几种完全合法的方式,你选择哪一种完全取决于你的程序结构,在某种程度上取决于个人偏好.

因此,为了获取值列表,您绑定content属性.在您的情况下,您可能将此绑定到NSArrayController的arrangeObjects键.在此设置中,每个菜单项代表一个对象.默认情况下,菜单项的标题是通过调用数组中每个项目的描述返回的字符串.如果要为菜单标题使用其他属性,还可以绑定contentValues数组.只需确保为contentValues指定的密钥路径具有内容的密钥路径作为其前缀(例如,您可以使用arrangeObjects作为内容,arrangeObjects.name作为contentValues)

这将为您提供表示对象的菜单项.接下来你需要的是识别所选择的一种方法.您可以使用三种不同的绑定:selectedindex,selectedobject和selectedValue.它们分别表示用户选择的数组对象的索引,对象值(内容数组中的一个对象),以及所选项的字符串标题(如果绑定,则为contentValues数组中的一个对象)那个属性).

因此,在您的情况下,您可以将selectedobject绑定到控制器类上的selectedSerialPort属性.当用户单击“连接”按钮时,您只需要引用selectedSerialPort属性.

总结

以上是内存溢出为你收集整理的objective-c – NSPopUpButton,Bindings和缩短生命周期全部内容,希望文章能够帮你解决objective-c – NSPopUpButton,Bindings和缩短生命周期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1021574.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存