如何从NSPopUpButton获取所选项目?

时间:2013-08-05 10:33:23

标签: macos applescript osx-mountain-lion nspopupbutton

property myPopUp : missing value
on startbuttonpressed_(sender)
    if myPopUp's selectedItem = "Item 1"
        display dialog "This is Item 1"
    else
        display dialog "Failed"
    end if
end startbuttonpressed_

我成功编译了这段代码,但是我收到了“失败”的消息,虽然我选择了“第1项”。
我认为我的错误是“myPopUp的selectedItem”,但我不知道如何纠正它。
如何从NSPopUpButton获取所选项目?

2 个答案:

答案 0 :(得分:17)

如果您查看NSPopUpButton documentation,您将能够看到您可以调用的所有方法以及它的继承方式。在Getting User Selection下你有:

– selectedItem
– titleOfSelectedItem
– indexOfSelectedItem
– objectValue

当然这些都是方法,所以如果你想获得所选值的索引,你可以调用如下:

set my_index to myPopup's indexOfSelectedItem()

查看文档中的indexOfSelectedItem条目:

indexOfSelectedItem
Returns the index of the item last selected by the user.

- (NSInteger)indexOfSelectedItem

Return Value
The index of the selected item, or -1 if no item is selected.

我们在顶部概述了函数,然后是函数的用法,最后是返回值的描述。这告诉我们indexOfSelectedItem不接受任何参数(如果它确实看起来像- (NSInteger)indexOfItemWithTitle:(NSString *)title)。左边的返回值将是一个NSInteger, NOT 一个Applescript Integer。虽然Applescript可能能够以同样的方式对待它,但在某些情况下,这可能会给你带来麻烦。解决方案是永远不要像处理AS字符串那样处理NSString,也不要像处理AS Integer那样处理NSInteger。要进行转换,我们必须将其更改为AS字符串,然后更改为AS整数:

set my_index to ((myPopup's indexOfSelectedItem()) as string) as integer

因此,对于您的代码,如果看起来您可以使用indexOfSelectedItem titleOfSelectedItem

答案 1 :(得分:2)

if条件应该是这样的:

if (myPopup's titleOfSelectedItem()) = "Item 1" then