Hy家伙,我使用相同的UIMenuItem
创建多个selector
:
["first", "second", "third"].forEach({ (menu) in
let b = UIMenuItem(title: menu, action: #selector(target.tap(sender:)))
})
@objc public func click(sender: UIMenuItem){
print("click: \(sender)")
}
但我收到的发件人对象不是类型:UIMenuItem
,所以如果我使用:
@objc public func click(sender: UIMenuItem){
print("click: \(sender.title)")
}
知道哪个按钮点击了,我得到错误,如果我使用:
@objc public func click(sender: UIMenuController){
print("click: \(sender.menuItems)")
}
我看到正确数量的项目,如何在不使用一个选择器的情况下访问被点击的项目?
谢谢!
答案 0 :(得分:0)
不幸的是,没有任何选项(委托,函数/方法或变量/属性)提供有关所选菜单项的信息。
我确实面临同样的问题,但找不到任何东西。最后我实施了一个手动练习,如下所示:
var menuItems = [UIMenuItem]()
menuItems.append(UIMenuItem(title: "First", action: #selector(self.firstMenuClick(_:))))
menuItems.append(UIMenuItem(title: "Second", action: #selector(self.secondMenuClick(_:))))
menuItems.append(UIMenuItem(title: "Third", action: #selector(self.thirdMenuClick(_:))))
UIMenuController.shared.menuItems = menuItems
@objc public func firstMenuClick(sender: UIMenuController){
print("firstMenuClick")
}
@objc public func secondMenuClick(sender: UIMenuController){
print("secondMenuClick")
}
@objc public func thirdMenuClick(sender: UIMenuController){
print("thirdMenuClick")
}
我也在寻找比我用过的更好的答案,但如果你找不到更好的方法,你可以尝试这个来解决你的问题。