首页 > 解决方案 > Swift 中 UIMenu 中子菜单选项的复选标记

问题描述

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: { (_) in })
        
        var showAsActions: [UIAction] {
            return [
                clockAction, calendarAction
            ]
        }
        
        var showAsMenu : UIMenu {
            return UIMenu(title: "Show As", image: UIImage(systemName: "questionmark.circle.fill"), identifier: .none, children: showAsActions)
        }
    
        let menu = UIMenu(title: "",
                          image: nil,
                          identifier: nil,
                          options: [],
                          children: [showAsMenu, scribbleAction, textAction])
                
        let barButtonRight = UIBarButtonItem(title: "Sort", image: UIImage(systemName: "ellipsis.circle.fill"), primaryAction: nil, menu: menu)
        navigationItem.rightBarButtonItems = [barButtonRight]
    }
}

当用户点击导航栏中的按钮时,这一切都有效并产生以下结果:

在此处输入图像描述

点击第一个菜单项会产生所需的效果:

在此处输入图像描述

但有时,我还需要能够用复选标记标记第一个菜单项(这是一个子菜单项)。我无法弄清楚如何做到这一点,并且在 Stackoverflow 以及 Apple Developer Forums 等上进行了搜索,但无法解决。任何建议将不胜感激。

标签: iosswiftcontextmenu

解决方案


推荐阅读