MSMessagesViewController 委托 returns nil 用于活动对话

MSMessagesViewController delegate returns nil for active conversation

我正在尝试将初始视图控制器中的 activeConversation 传递给另一个视图控制器。我这样做的方法是将一个名为 currentConversation 的变量设置为 activeConversation。但是,每当我尝试访问该属性时,它 returns nil.

初始视图控制器:

    vc.displayType = self.passSelectedPhrase
    vc.currentConversation = activeConversation
    performSegue(withIdentifier: "showDetail", sender: selectedPhrase)

消息视图控制器(委托):

var currentConversation : MSConversation!
func saySomething(value: String){

    if ((currentConversation) != nil) {
        currentConversation?.insertText("hello there", completionHandler: nil)
        currentConversation?.insertText(value, completionHandler: nil)
    }else{
        print("No active conversation")
    }
}

Returns "No active conversation"

看起来您正在手动启动视图控制器、设置变量,然后调用 segue。

segue 将启动它自己的视图控制器,因此您启动的视图控制器实际上并没有被使用。

您需要使用 prepareForSegue 方法来设置您的变量,因为它引用了即将显示的视图控制器。