Как сохранить выбранный NSMenuItem в NSPopover с NSMenu? - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть кнопка NSPopUpButton со встроенным NSMenu.

Однако, когда выбран NSMenuItem, он продолжает возвращаться к первому элементу.

menu jumping back to default

В этом примере я ожидаю, что будет выбран вариант "Maged".

Есть идеи?

Связанный вопрос / ответ: https://stackoverflow.com/a/53387962/157656

Дубликат:

Было высказано предположение, что это дубликат вопроса Как изменить / изменить отображаемое название NSPopUpButton

"Я хотел бы NSPopUpButtonчтобы отобразить заголовок, отличный от заголовка выбранного пункта меню. "

Однако мой вопрос был о том, чтобы заставить NSPopUpButton отображать выбранный элемент.

1 Ответ

0 голосов
/ 25 ноября 2018

В конце концов, я изменил способ.

Я использую NSButton для отображения меню и NSTextField для отображения результатов.

current implementation

Если кому-то интересны подробности, вот они.

Создайте меню и используйте .representedObject для хранения того, что вам нужно для доступа на другом конце.Я использовал структуру с именем и кодом в нем.

Вам нужно назначить NSMenu для NSButton.menu

Затем щелкните, что-то вроде этого.

@IBAction func changeVoiceClicked(_ sender: NSButton)
{
    if let event = NSApplication.shared.currentEvent {
        NSMenu.popUpContextMenu(sender.menu!, with: event, for: sender)
    }
}

Ваш NSMenuItem должен иметь действие, которое с помощью селектора указывает на функцию.

Примерно так:

@objc func voiceChanged(sender: NSMenuItem)
{
    // cope will nil
    var voice : VoiceDetail = VoiceDetail();

    if (sender.representedObject != nil) {
        voice = sender.representedObject as! VoiceDetail;
    }

    // Do what you need to on menu select.
    // update text field.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...