Пункты меню, выделенные серым с использованием контроллера разделенного представления - Catalyst - PullRequest
0 голосов
/ 13 октября 2019

Я работаю над тем, чтобы перенести приложение для iPad на Mac с помощью Catalyst. Мое приложение использует контроллер разделенного представления. Контроллер основного вида имеет две строки, которые можно нажимать, что позволяет пользователю сделать фотографию или выбрать фотографию из списка камер. Я пытаюсь добавить два элемента меню с сочетаниями клавиш для каждого из этих действий.

После добавления пунктов меню, следуя инструкциям в видео WWDC, пункты меню отображаются серым цветом при первом запуске приложения. Ниже приведен снимок экрана, показывающий, что приложение запущено впервые, а «Снять фото» и «Выбрать с камеры» выделены серым цветом. Grayed out menu items

Однако, если я переключу / коснусь какого-либо элемента в главном контроллере вида, пункты меню станут активными и будут работать по назначению. Как только я выбираю пункт меню, он снова становится серым, и мне нужно переключить / коснуться элемента в главном контроллере вида, чтобы снова включить его. enabled menu items

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

Код, который я использую для добавления пунктов меню, довольно прост. Я добавил @IBAction к методам, которые делают фото и выбирают из камеры ролл. Я добавил главное меню в свой файл раскадровки с двумя новыми пунктами встроенного меню и соединил каждый со своими методами.

1 Ответ

0 голосов
/ 15 октября 2019

Вы пытались отключить «Auto Enables Items» для меню. Если это не поможет, или вы хотите контролировать активацию, я буду следовать документации Apple здесь или попробовать что-то вроде ниже в вашем контроллере представления.

 override func validate(_ command: UICommand) {

      switch command.action {
      case #selector(doSomething):

          command.title = "Change the title"
          command.attributes = [.disabled]
            // command.attributes = []

        default:
        break
      }
    }

enter image description here

...