Swift重写方法didPressSend

时间:2016-11-27 22:37:05

标签: swift jsqmessagesviewcontroller

我正在使用Swift 3.0和Xcode 8.0以及JSQMessages 7.3.4。

我正在尝试实现JSQMessagesViewController,具体来说,我试图覆盖didPressSend函数,但它一直在抱怨该方法不会覆盖其超类中的任何方法。

override func didPressSend(_ button: UIButton, withMessageText text: String, senderId: String, senderDisplayName: String, date: Date) {
    print("working")
}

有关为何会这样做的任何想法?

它还抱怨方法不能是@obj覆盖,因为参数5的类型不能用Objective-C表示。

2 个答案:

答案 0 :(得分:0)

您可以通过键入override func didpress然后接受建议的完成来更正错误。在那里你会看到有一些微妙的差异,最值得注意的是强行解开的选项:

override func didPressSend(_ button: UIButton!, 
               withMessageText text: String!, 
                           senderId: String!, 
                  senderDisplayName: String!, 
                               date: Date!) {
    print("works")
}

答案 1 :(得分:0)

override func didPressSend(_ button: UIButton?, withMessageText text: String?, senderId: String?, senderDisplayName: String?, date: Date?) {
    // Check to make sure we are sending something no need for blank messages.
    guard let text = text else {
        return
    }
    print("working")
    // add logic here.
}

在那里练习安全代码。