如何在iOS中动态更新UIMenu和UIContextMenuConfiguration?

问题描述 投票:0回答:1

我在

UIAction
UIMenu
中拥有一个名为“添加到收藏夹”的
UIContextMenuConfiguration
,用于
UITableView
的单元格。我想在下次菜单显示为“从收藏夹中删除”时更改菜单。但是,我了解到
UIMenu
是不可变的。

如何实现动态更新菜单的目标?

ios swift uikit ios15 uimenu
1个回答
0
投票
@objc extension UIMenu {
    
    /// Recalculates menu on every appearance (e.g. when assigning to UIButtons as primary action)
    static func lazyMenu(builder: @escaping () -> UIMenu) -> UIMenu {
        return UIMenu(children: [
                // rebuild menu every time menu is accessed
                UIDeferredMenuElement.uncached { completion in
                    let menu = builder()
                    completion([menu])
                }
            ])
    }
}

确保从构建器块返回的菜单包含 .displayInline:例如

UIMenu(options: .displayInline, children: myMenuItems) 
© www.soinside.com 2019 - 2024. All rights reserved.