我只是想知道是否可以将功能传递给按钮动作(通常是选择器).
例如,通常我会说:
UIBarButtonItem(title: "Press",style: .Done,target: self,action: "functionToCall") func functionToCall() { // Do something }
但是我想知道是否可以做一些类似的事情:
UIBarButtonItem(title: "Press",action: { // Do Something })
我想这样做的原因是因为我的功能是超级简单的,而且看起来像是更加干净和更Swift,就像他们关闭的重点一样.
解决方法
这是Swift 3的更新解决方案.
class BlockBarButtonItem: UIBarButtonItem { private var actionHandler: ((Void) -> Void)? convenience init(title: String?,style: UIBarButtonItemStyle,actionHandler: ((Void) -> Void)?) { self.init(title: title,style: style,target: nil,action: #selector(barButtonItemPressed)) self.target = self self.actionHandler = actionHandler } convenience init(image: UIImage?,actionHandler: ((Void) -> Void)?) { self.init(image: image,action: #selector(barButtonItemPressed)) self.target = self self.actionHandler = actionHandler } func barButtonItemPressed(sender: UIBarButtonItem) { actionHandler?() } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。