如何解决UIMenu不弹出
我试图在用户按下正确的 UIMenu
后弹出一个 UIBarButton
,但问题是 UIMenu 没有弹出,我不知道为什么,会很酷如果你们能帮我解决这个问题。
我的代码:
// MARK: - UIBarButtonItem Creation and Configuration
func configureUIButtons() {
// let toolbarButtonItems = [
// customTitleBarButtonItem,// flexibleSpaceBarButtonItem,// deleteBarButtonItem
// ]
let toolbarButtonItems = [
markBarButtonItem,flexibleSpaceBarButtonItem,deleteBarButtonItem
]
toolBar.setItems(toolbarButtonItems,animated: true)
}
var deleteBarButtonItem: UIBarButtonItem = UIBarButtonItem(title: "Delete",style: .plain,target: self,action: #selector(NotificationsViewController.deleteButtonItemClicked(_:)))
// var deleteBarButtonItem: UIBarButtonItem {
// let deleteBarButtonItem: UIBarButtonItem = UIBarButtonItem(title: "Delete",action: #selector(NotificationsViewController.deleteButtonItemClicked(_:)));
//
// return deleteBarButtonItem
//
// }
var flexibleSpaceBarButtonItem: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace,target: nil,action: nil)
// var flexibleSpaceBarButtonItem: UIBarButtonItem {
// return UIBarButtonItem(barButtonSystemItem: .flexibleSpace,// target: nil,// action: nil)
// }
var markBarButtonItem: UIBarButtonItem = UIBarButtonItem(title: "Mark",action: #selector(NotificationsViewController.markButtonItemClicked(_:)))
// MARK: - Actions
@objc
func deleteButtonItemClicked(_ barButtonItem: UIBarButtonItem) {
print("Delete Button is clicked \(barButtonItem).")
}
@objc
func markButtonItemClicked(_ barButtonItem: UIBarButtonItem ) -> UIMenu {
print("Mark is pressed")
let markMenu = UIMenu(title: "",children: [
UIAction(title: "Flag",image: UIImage(systemName: "flag")) { action in
print("Flag is pressed")
},UIAction(title: "Mark as Unread",image: UIImage(systemName: "envelope.badge")) { action in
print("Mark as Unread is pressed")
},])
return markMenu
}
// func menuItems() -> UIMenu {
// let markMenu = UIMenu(title: "",children: [
// UIAction(title: "Flag",image: UIImage(systemName: "flag")) { action in
// print("Flag is pressed")
// },// UIAction(title: "Mark as Unread",image: UIImage(systemName: "envelope.badge")) { action in
// print("Mark as Unread is pressed")
// },// ])
//
// return markMenu
// }
//
解决方法
您没有为菜单使用正确的初始化程序。
let markMenu = UIMenu(title: "",children: [
UIAction(title: "Flag",image: UIImage(systemName: "flag")) { action in
print("Flag is pressed")
},UIAction(title: "Mark as Unread",image: UIImage(systemName: "envelope.badge")) { action in
print("Mark as Unread is pressed")
},])
let markBarButtonItem = UIBarButtonItem(title: "Mark",image: nil,primaryAction: nil,menu: markMenu)
let toolBar = UIToolbar(frame: CGRect(origin: .zero,size: CGSize(width: 300,height: 100)))
toolBar.setItems([markBarButtonItem],animated: true)
,
在条形按钮初始化中添加选择器时使用“self”代替视图控制器的名称(NotificationsViewController),或者如果您不喜欢将 self.不需要时在方法和属性前面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。