由于某些原因,我的代码可以正常打印user.email,但是它不向用户显示chatlog控制器,它什么都不做?

(当我单击标题中的按钮时,调用func openUsersChatLogForUser()

与-class ProfilePageHeader: UICollectionViewCell

var messagesController: MessagesController?

func openUsersChatLogForUser(){

    guard let user = self.profileUser else {return}

    print(user.email!)

    self.messagesController?.showChatControllerForUser(user)
}




下面的函数在MessagesController: UITableViewController类中

func showChatControllerForUser(_ user: User2) {
    let chatLogController = ChatLogController(collectionViewLayout: UICollectionViewFlowLayout())
    chatLogController.user = user
    navigationController?.pushViewController(chatLogController, animated: true)
}

最佳答案

1)检查messagesController是否包含值(不是nil)。

2)检查是否有管理navigationControllerMessagesController。如果不存在,则将该控制器嵌入UINavigationController。否则它将无法推送任何内容。

3)不太可能,但仍然可以是:从主线程调用showChatControllerForUser

DispatchQueue.main.async {
    self.messagesController?.showChatControllerForUser(user)
}

10-07 15:47