ios - 向标准文本库 UIBarButtonItem 添加一个 Action

标签 ios swift uibarbuttonitem

我相信我已经按照其他 SO 线程的步骤通过另一种方法调用操作,当 UIBarButtonItem 被点击时但是我不断收到以下错误 Argument of '#selector' does not refer to an “@objc”方法、属性或初始值设定项,错误是突出显示 #selector 文本。

这是设置按钮:

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "\(barButtonItemText)", style: .done, target: self, action: #selector(inviteMethod(inviteMethod: inviteMethodSelected!)))

这是我在点击按钮时尝试运行的方法:

    func inviteMethod (inviteMethod:String) {

    let inviteMethod = inviteMethod

    if inviteMethod == "email" {
        inviteViaEmail(invitedContacts: self.invitedContacts)
    }
    else {
        inviteViaText(invitedContacts: self.invitedContacts)  
    }  }

其中一种邀请方法的示例,以防有帮助

    func inviteViaEmail (invitedContacts:[Contact]) {

    var invitedContactsEmails:[String] = []

    for contactEmails in invitedContacts {

        let emailAddress = contactEmails.emailAddress ?? ""

        invitedContactsEmails.append(emailAddress)

    }

        let mc = MFMailComposeViewController()
        mc.mailComposeDelegate = self as? MFMailComposeViewControllerDelegate

        mc.setToRecipients(invitedContactsEmails)
    mc.setSubject("Invite for Gallery App, Event \(event?.eventName)")

    mc.setMessageBody("This is a test invite email \n\n\(event?.eventHost) has invited you to join their event", isHTML: false)

        self.present(mc, animated: true, completion: nil)

}

最佳答案

UIBarButtonItem 以及所有其他 UIControl 对象的操作可以采用一个参数,该参数是对象本身或没有参数。

关联的方法是

@objc func inviteMethod()

@objc func inviteMethod(_ sender : UIBarButtonItem)

不支持任何自定义参数


你必须这样初始化按钮:

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "\(barButtonItemText)", 
                                                    style: .done, 
                                                    target: self, 
                                                    action: #selector(inviteMethod))

关于ios - 向标准文本库 UIBarButtonItem 添加一个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59686368/

相关文章:

ios - 在 Swift 和 sprite kit 中如何检测滑动的 Sprite ?

ios - 自定义 HealthKit HKQuantityType 标识符

swift - 了解 swift 中的转换规则

ios - 单击时在 BarButtonItem 下方显示下拉菜单(弹出窗口)

ios - 如何使多个右栏按钮项目在导航栏中垂直堆叠?

ios - 如何回滚临时上下文的更改?

ios - 在应用程序启动时启动视频失败 iOS

ios - 如何避免 UIToolbar 的 tintColor 更改 UIButtonItem 按钮颜色?

ios - 动画 UIBezierPath 从所有圆角到具有左上角和右上角圆角的路径

ios - 没有 GLKit 的 OpenGL ES 2