Segue to chat viewcontroller

时间:2017-05-16 05:09:08

标签: ios swift firebase firebase-realtime-database segue

我已经包含了图片,希望这更容易理解。我的FirstViewController有一个集合视图,其中包含来自我的firebase数据库的用户列表。当我点击用户时,我会被一个有更多关于被点击用户的信息的详细控制控制器。在该viewController中,目标是单击撰写按钮并转到viewController,它允许我与用户聊天,我点击了该用户的个人资料。 enter image description here

我已经完成了从DetailedViewController到Message用户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)

            }  }

1 个答案:

答案 0 :(得分: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:)允许您拦截其类中的任何segue,并在performSegue( ... )执行之前设置所需的任何变量。要将代码定位到特定的segue /目的地/情境,请确保您的代码在执行之前检查这些约束;否则代码将在类中实现的所有segue上执行。在我的示例中,我使用了segue的{​​{1}}作为检查。