Как создать настраиваемое меню док-станции для моего приложения macOS в доке с помощью Xcode

Я пытаюсь создать настраиваемое меню док-станции для моего быстрого приложения в док-станции, чтобы, когда пользователь щелкнул правой кнопкой мыши плитку док-станции моего приложения после его запуска, он отобразил мой настроенный элемент в дополнение к элементам меню док-станции по умолчанию. Я предпочитаю делать это программно или создавать (статический) пункт меню с помощью Xcode.

Я рассмотрел похожие вопросы, размещенные здесь ( Как я могу добавить меню в приложение в доке?) И ( Добавление элементов в меню дока из моего контроллера представления в моем приложении Какао), но оба ссылались на старый интерфейс пера вместо того, как создать его с помощью раскадровки. Я также просмотрел библиотеку шаблонов файлов в раскадровке, но не смог найти шаблон для меню док-станции (я вижу только один для главного меню).

Мы будем очень благодарны за любой указатель на то, как добиться этого с помощью раскадровки или программно с помощью Swift.

РЕДАКТИРОВАТЬ 24/4/2020: после ответа Кена я решил программно настроить меню док-станции. Вот как я реализовалapplicationDockMenu(_:) в AppDelegate

РЕДАКТИРОВАТЬ №2 24/4/2020: исправлено отсутствие _ входной аргумент метода и решенная проблема.

func applicationDockMenu(_ sender: NSApplication) -> NSMenu? {
        let myMenu = NSMenu(title: "MyMenu")
        let myMenuItem = NSMenuItem(title: "My Item 1", action: nil, keyEquivalent: "")
        myMenu.addItem(myMenuItem)
        return myMenu
    }

Должно быть, мне не хватает чего-то еще, так как новый элемент не появился, и я щелкнул правой кнопкой мыши значок док-станции после запуска приложения.

Есть идеи?

Спасибо.

Кенни

1 ответ

Вы можете реализовать метод applicationDockMenu(_:) в классе делегата вашего приложения, чтобы вернуть меню элементов, которые нужно добавить в меню Dock.

Если вы проверите документацию по этому методу, в ней также обсуждаются другие методы для создания статического меню Dock. Один из них предполагает создание отдельного СИБ. Если нет шаблона для NIB меню, вы можете просто создать пустой и добавить к нему объект меню. На этот NIB ссылается ключ в файле Info.plist, и его раскадровка не требуется.

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