6
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's selectedItem”,但我不知道如何纠正它。
如何从 NSPopUpButton 获取所选项目?

4

2 回答 2

21

如果您查看NSPopUpButton 文档,您将能够看到您可以调用的所有方法以及它继承自什么。根据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,而不是Applescript Integer。尽管 Applescript 可能能够以同样的方式处理它,但在某些情况下这会给您带来问题。解决方案是永远不要将 NSString 视为 AS 字符串,也永远不要将 NSInteger 视为 AS 整数。要进行转换,我们必须将其更改为 AS 字符串,然后再更改为 AS 整数:

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

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

于 2013-08-07T17:49:23.090 回答
3

if条件应该是这样的:

if (myPopup's titleOfSelectedItem()) = "Item 1" then
于 2013-08-05T18:03:03.870 回答