Xcode_OSX/Swift_NSPopUpButton.

Я невероятно новичок в этом, поэтому, пожалуйста, имейте это в виду!

Я занимался этим всю ночь, просмотрел бесчисленное количество видео/побывал на бесчисленных форумах...Я не могу найти ни одного ответа!

Я пытаюсь создать базовое всплывающее меню в Swift/OSX. Мне нужно выяснить следующее:

  • Как я могу добавить в это меню больше, чем «три пункта»
  • Что бы ни было выбрано во всплывающем окне, для этой информации нужно отправить целочисленное значение на другой номер.

Я был бы очень признателен за вашу помощь, Спасибо.


person maplecobra    schedule 24.05.2015    source источник


Ответы (1)


NSPopupButton — это контейнер для набора NSMenuItem объектов, поэтому для добавления элемента можно использовать

func addItemWithTitle(_ title: String!)

NSMenuItem создается для вас вызовом.

и, если вы захотите начать с нуля, вы можете использовать

func removeAllItems()

Для очистки существующих элементов от кнопки.

Существуют также другие методы вокруг перемещения и удаления пунктов меню с кнопки.

NSPopupButton — это NSControl, поэтому вы можете использовать var action: Selector для установки действия, отправляемого при выборе элемента, и var target: AnyObject! для управления тем, какой объект получает сообщение. Или просто подключите его к Interface Builder.

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)
        }
    }


}

Вся конструкция кнопки может быть выполнена в Interface Builder, а не в коде. Помните, что вы можете дублировать элементы с помощью CMD-D или перетаскивать новые объекты NSMenuItem на кнопку.

person Warren Burton    schedule 24.05.2015