Как я могу изменить UIAction UIMenu, прикрепленного к кнопке панели навигации?

Я работаю над приложением с настраиваемым файловым браузером, и в настоящее время я работаю над реализацией копирования / вставки. У меня есть кнопка на панели навигации, к которой я прикрепил UIMenuв, чтобы показать варианты добавления файлов, включая вставку. Я хочу, чтобы кнопка вставки автоматически включалась, когда файлы находятся в буфере обмена, и отключалась, когда буфер обмена пуст. Сначала я попробовал это сделать:

// in class definition
var pasteAction: UIAction?
@IBOutlet var addButton: UIBarButtonItem!
// in viewDidLoad()
pasteAction = UIAction(
    title: "Paste Files",
    image: UIImage(systemName: "doc.on.clipboard"),
    attributes: clipboard.isEmpty ? .disabled : [],
    handler: pasteFiles
)
addButton.menu = UIMenu(
    title: "", image: nil, identifier: nil, options: .displayInline,
    children: [folder, file, imp, pasteAction!]
)
// in copy()
pasteAction!.attributes = clipboard.isEmpty ? .disabled : []

Однако кнопка вставки осталась неактивной. (При выходе из контроллера представления и повторном входе в него включается кнопка вставки.) Я также попытался заменить меню новым с теми же дочерними элементами:

pasteAction!.attributes = clipboard.isEmpty ? .disabled : []
var c = Array(addButton.menu!.children[0...2])
c.append(pasteAction!)
addButton.menu = addButton.menu!.replacingChildren(c)

Это тоже не сработало. Наконец, я попытался создать новый UIAction, на всякий случай изменить его на самом деле невозможно:

var c = Array(addButton.menu!.children[0...2])
c.append(UIAction(
    title: "Paste Files",
    image: UIImage(systemName: "doc.on.clipboard"),
    attributes: FilesViewController.clipboard.isEmpty ? .disabled : [],
    handler: pasteFiles
))
addButton.menu = addButton.menu!.replacingChildren(c)

Но это все равно ничего не дает. Мне не хватает какой-то функции обновления, которую мне нужно вызвать? Или я не могу изменить меню для кнопки панели навигации после загрузки представления?

0 ответов

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