Делегат MSMessagesViewController возвращает nil для активного разговора - PullRequest
2 голосов
/ 05 апреля 2020

Я пытаюсь передать activeConversation внутри начального контроллера представления другому контроллеру представления. Я делаю это путем установки переменной activeConversation в activeConversation. Однако всякий раз, когда я пытаюсь получить доступ к этому атрибуту, он возвращает 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")
    }
}

Возвращает «Нет активного разговора»

1 Ответ

1 голос
/ 06 апреля 2020

Похоже, что вы вручную запускаете контроллер представления, устанавливаете переменные, затем вызываете segue.

Segue инициирует собственный контроллер представления, поэтому тот, который вы инициируете, фактически не используется.

Вам необходимо использовать метод prepareForSegue для установки ваших переменных, так как он имеет ссылку на контроллер представления, который должен отображаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...