首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有相同选择器的多个UIMenuItem

具有相同选择器的多个UIMenuItem
EN

Stack Overflow用户
提问于 2018-02-02 19:52:43
回答 1查看 228关注 0票数 1

伙计们,我用相同的selector创建了多个UIMenuItem

代码语言:javascript
复制
["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,所以如果我使用:

代码语言:javascript
复制
@objc public func click(sender: UIMenuItem){
    print("click: \(sender.title)")
}

要知道哪个按钮点击了,我会得到错误,如果我使用:

代码语言:javascript
复制
@objc public func click(sender: UIMenuController){
    print("click: \(sender.menuItems)")
}

我看到了正确数量的项目,我如何才能访问点击的项目,而不使用每个项目的一个选择器?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-02-02 20:04:33

遗憾的是,没有任何选项(委托、函数/方法或变量/属性)提供有关所选菜单项的信息。

我确实遇到了同样的问题,但什么也找不到。最后,我实现了一个手动练习,如下所示:

代码语言:javascript
复制
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")
}

我也在寻找比我以前更好的答案,但如果你找不到更好的方法,你可以尝试这个方法来解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48582128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档