2017-05-16 132 views
0

我已經包含圖像,有望使這更容易理解。我的FirstViewController具有一個集合視圖,其中包含來自我的Firebase數據庫的用戶列表。當我單擊用戶時,我會看到DetailedViewController,其中包含有關用戶被點擊的更多信息。在該viewController中,目標是點擊撰寫按鈕並繼續瀏覽一個viewController,它允許我與用戶聊天,他的個人資料我點擊。 enter image description hereSegue公司聊天視圖 - 控制

我已經儘可能得到這個從DetailedViewController segueing到郵件用戶1

@IBAction func SendMessage(_ sender: Any) { 
    performSegue(withIdentifier: "chat", sender: self) 

} 

我不知道如何確保我送我點擊郵件的特定用戶。

這是怎麼了,我從FirstViewController將數據傳遞到DetailedViewController。採取

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "details" { 

      if let indexPaths = self.CollectionView!.indexPathsForSelectedItems{ 

       let vc = segue.destination as! BookDetailsViewController 
       let cell = sender as! UICollectionViewCell 
       let indexPath = self.CollectionView!.indexPath(for: cell) 
       let post = self.posts[(indexPath?.row)!] as! [String: AnyObject] 
       let Booked = post["title"] as? String 
       vc.Booked = Booked 


       print(indexPath?.row) 

      } } 
+0

你從detailedViewController意味着chatViewController或者你沒有通過從firstViewController到detailedViewController數據? –

+0

@NiravD數據已經從FirstViewController傳遞給DetailedViewController,我的問題是,當我點擊DetailedViewController撰寫按鈕,我希望能夠將消息發送給我上 – juelizabeth

+0

點擊用戶,您已通過用戶詳述chatViewController此外,以便您具有chatViewController與特定用戶聊天的詳細信息? –

回答

1

一個路徑是在你DetailViewController類,或任何類,你已經實現performSegue(withIdentifier:, sender:),補充一點:

override public func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    guard segue.identifier == "chat", let dest = segue.destination as? ChatViewController else { 
     return 
    } 

    dest.user = self.user 

} 

我不知道你怎麼有用戶聲明,但如果用戶是一個對象,做我上面的。如果你說用戶作爲一種傘形要傳遞多個屬性..做到這一點:

dest.name = self.name 
dest.number = self.number 
//etc 

prepare(for segue:, sender:)允許您攔截從它的類中的任何賽格瑞,併成立了performSegue(之前需要的任何變量... )執行。要將您的代碼定位到特定的segue /目標/情境,請確保您的代碼在執行之前對這些約束進行檢查;否則代碼將在課程中實施的所有segue上執行。在我的例子中,我用你的segueidentifier作爲檢查。