Xcode_OSX/Swift_NSPopUpButton.

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

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

Я пытаюсь сделать простое всплывающее меню в Swift/OSX, что мне нужно выяснить это:

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

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

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 объекты в кнопку.

Другие вопросы по тегам