Macos Xcode_OSX/Swift_nspoupbutton。

Macos Xcode_OSX/Swift_nspoupbutton。,macos,swift,nspopupbutton,Macos,Swift,Nspopupbutton,我对这一点非常陌生,所以请记住这一点 我整晚都在这里,看了无数的视频/闹鬼 无数论坛…我找不到一个答案 我正在尝试在Swift/OSX中创建一个基本的弹出菜单,我需要弄清楚的是: 我怎样才能将“三项”以上的内容添加到此菜单中 无论在弹出窗口中选择什么,该信息都将发送一个整数 值转换为另一个数字 非常感谢您的帮助。一个nspoupbutton是一个容器,用于存放一堆NSMenuItem对象,以便添加您可以使用的项目 func addItemWithTitle(\utitle:String!)

我对这一点非常陌生,所以请记住这一点

我整晚都在这里,看了无数的视频/闹鬼 无数论坛…我找不到一个答案

我正在尝试在Swift/OSX中创建一个基本的弹出菜单,我需要弄清楚的是:

  • 我怎样才能将“三项”以上的内容添加到此菜单中
  • 无论在弹出窗口中选择什么,该信息都将发送一个整数 值转换为另一个数字

非常感谢您的帮助。

一个
nspoupbutton
是一个容器,用于存放一堆
NSMenuItem
对象,以便添加您可以使用的项目

func addItemWithTitle(\utitle:String!)

调用将为您构建
NSMenuItem

如果您希望从头开始,您可以使用

func removeAllItems()

从按钮中清除现有项目

从按钮上移动和删除菜单项有很多方法


nspoupbutton
是-A
NSControl
,因此您可以使用
var action:Selector
设置选中项目时发送的操作和
var target:AnyObject
控制哪个对象接收消息。或者只需在
界面生成器
中连接即可

protocol FooViewDelegate{
    func itemWithIndexWasSelected(value:Int)
}

class FooViewController: NSViewController  {

    @IBOutlet weak var myPopupButton: NSPopUpButton!
    var delegate: FooViewDelegate?

    let allTheThings = ["Mother", "Custard", "Axe", "Cactus"]

    override func viewDidLoad() {
        super.viewDidLoad()
        buildMyButton()
    }

    func buildMyButton() {
        myPopupButton.removeAllItems()

        myPopupButton.addItemsWithTitles(allTheThings)
        myPopupButton.target = self
        myPopupButton.action = "myPopUpButtonWasSelected:"

    }

    @IBAction func myPopUpButtonWasSelected(sender:AnyObject) {

        if let menuItem = sender as? NSMenuItem, mindex = find(allTheThings, menuItem.title) {
            self.delegate?.itemWithIndexWasSelected(mindex)
        }
    }


}
所有的按钮构造都可以在
界面生成器中完成,而不是在代码中完成。请记住,您可以使用
CMD-D
复制项目,也可以将新的
NSMenuItem
对象拖动到按钮中