iOS 14 添加了在点击或长按 UIBarButtonItem 或 UIButton 时显示菜单的功能,如下所示:
let menu = UIMenu(children: [UIAction(title: "Action", image: nil) { action in
//do something
}])
button.menu = menu
barButtonItem = UIBarButtonItem(title: "Show Menu", image: nil, primaryAction: nil, menu: menu)
Run Code Online (Sandbox Code Playgroud)
这通常会替换操作表(UIAlertController带actionSheet样式)。有一个动态操作表是很常见的,其中基于用户点击按钮时的某些状态仅包含或可能禁用操作。但是使用此 API,菜单是在创建按钮时创建的。如何在菜单出现之前修改菜单或使其动态化以确保适当的操作可用并在出现时处于正确的状态?
我有以下代码,当用户点击uibarbutton导航栏中的 a 时,它会生成上下文菜单:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemGreen
title = "Hello"
let scribbleAction = UIAction(title: "Scribble", image: UIImage(systemName: "scribble"), state: .on, handler: { (_) in })
let textAction = UIAction(title: "Typing", image: UIImage(systemName: "textformat"), state: .off, handler: { (_) in })
let clockAction = UIAction(title: "Show Clock", image: UIImage(systemName: "clock"), state: .off, handler: { (_) in })
let calendarAction = UIAction(title: "Date Last Used", image: UIImage(systemName: "calendar"), state: .off, handler: { …Run Code Online (Sandbox Code Playgroud)