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获取所选项目?
答案 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