2017-10-19 2 views
0

aus irgendeinem Grund mein Code druckt die user.email gut, aber es stellt nicht den Chatlog-Controller für den Benutzer, es tut einfach nichts?present collection view controller von einer UICollectionViewCell

(die func openUsersChatLogForUser() aufgerufen wird, wenn ich auf eine Schaltfläche geklickt mit im Header)

mit in - class ProfilePageHeader: UICollectionViewCell

var messagesController: MessagesController? 

func openUsersChatLogForUser(){ 

    guard let user = self.profileUser else {return} 

    print(user.email!) 

    self.messagesController?.showChatControllerForUser(user) 
} 

die Funktion unten ist innerhalb der Klasse MessagesController: UITableViewController

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

Antwort

0

1) Überprüfen Sie, ob messagesController enthält Wert (nicht Nil).

2) Überprüfen Sie, ob navigationController vorhanden ist, der MessagesController verwaltet. Wenn es nicht da ist, betten Sie diesen Controller in UINavigationController ein. Sonst wird es nichts schieben können.

3) Unwahrscheinlich, aber trotzdem werden: call showChatControllerForUser von Hauptthread:

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

dank Hexfire messageController ist gleich Null, wie würde ich es einstellen? – bennypalms661

+0

Legen Sie den Wert einfach fest, wenn Sie die Sammlungsansicht mit Ihren benutzerdefinierten Zellen füllen. – Hexfire

+0

Es ist 'collectionView (collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell' Methode, die Sie suchen. Beim Aufrufen von 'collectionView.dequeueReusableCellWithReuseIdentifier' wandeln Sie ihn in Ihre benutzerdefinierte Zelle um. rufen Sie dann: 'cell.messagesController' = ... Controller. – Hexfire

Verwandte Themen