2017-10-19 3 views
0

pour une raison quelconque mon code affiche le user.email bien mais il ne présente pas le contrôleur chatlog pour l'utilisateur, il ne fait rien?présent contrôleur de vue de collection à partir d'un UICollectionViewCell

(le func openUsersChatLogForUser() est appelé quand je clique sur un bouton dans l'en-tête)

avec en - class ProfilePageHeader: UICollectionViewCell

var messagesController: MessagesController? 

func openUsersChatLogForUser(){ 

    guard let user = self.profileUser else {return} 

    print(user.email!) 

    self.messagesController?.showChatControllerForUser(user) 
} 

la fonction ci-dessous est dans la classe MessagesController: UITableViewController

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

Répondre

0

1) Vérifiez si messagesController contient la valeur (pas nul). 2) Vérifiez s'il y a navigationController qui gère MessagesController. Si ce n'est pas le cas, intégrez ce contrôleur dans UINavigationController. Sinon, il ne pourra rien pousser.

3) Peu probable, mais on peut encore: appeler showChatControllerForUser de fil conducteur:

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

grâce Hexfire messageController est égal à zéro comment pourrais-je le mettre? – bennypalms661

+0

Définissez simplement sa valeur lors du remplissage de la vue de collection avec vos cellules personnalisées. – Hexfire

+0

C'est la méthode 'collectionView (collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell' que vous recherchez. Lorsque vous appelez 'collectionView.dequeueReusableCellWithReuseIdentifier', vous le transtypez dans votre cellule personnalisée. alors appelez: 'cell.messagesController' = ... controller. – Hexfire