iOS 14 настраивает меню UIBarButttonItem перед его открытием

Aug 19 2020

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

Я вижу, что есть UIDeferredMenuElement, но, похоже, это не лучший вариант использования?

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

И третий вариант, кажется, перетасовывает меню при каждом изменении, которое может повлиять на него, но это не кажется хорошей идеей.

Я предполагаю, что я что-то упускаю.

Ответы

1 matt Aug 19 2020 at 16:29

Как правило, для простых кнопок на панели такого положения нет. UIControl, такой как UIButton, имеет событие .menuActionTriggered, и в этот момент вполне разумно создать и назначить меню элементу управления, тем самым реализуя динамическое меню, которое создается непосредственно перед появлением меню.

Но вы не можете сделать это с элементом кнопки панели - если это не пользовательский элемент кнопки панели просмотра с UIButton в нем.

В противном случае вам нужно было бы наблюдать за окружающими условиями через какой-то другой механизм и просто менять меню элемента панели каждый раз, когда условия меняются. Звучит как заноза в заднице, но, вероятно, это ваш единственный вариант. (Насколько я понимаю, именно это вы имеете в виду, когда говорите: «И третий вариант, кажется, перетасовывает меню при каждом изменении, которое может повлиять на него, но это не кажется хорошей идеей».)

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