繁体   English   中英

如何将数据从Firebase在tableview单元之间传递到视图控制器?

[英]how to pass data from firebase between tableview cell to view controllers?

嗨,大家好,我真的很难将数据从一个tableview传递到另一个view controller。 我有一个显示每个用户列表的表视图,但是当我单击一个用户时,它会转到下一个视图控制器,而不会显示该特定用户的任何数据。 下面的代码与我遵循的示例几乎相同,但由于某种原因,它对我不起作用。 请帮忙,我尝试过寻找解决方案,但找不到任何东西。 我还使用Firebase来存储和检索我的数据。 提前致谢

@IBOutlet weak var searchTableView: UITableView!
var profiles = [user]()
var ref: FIRDatabaseReference!

override func viewdidload(){
 databaseRef = FIRDatabase.database().reference()
}

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "guestSegue", sender: self)
    self.searchTableView.deselectRow(at: indexPath as IndexPath, animated: true)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "guestSegue" {
        if let indexpath = searchTableView.indexPathForSelectedRow {
            let guestVC = segue.destination as! guestProfileViewController
            guestVC.ref = profiles[indexpath.row].ref


        }
    }
}

用户数组

class User {

var backgroundProfileImage: String!
var fullName: String!
var profilePic: String!
var ref: FIRDatabaseReference!
var key: String

init(backgroundProfileImage: String, fullName: String, profilePic: String, key: String = ""){



    self.backgroundProfileImage = backgroundProfileImage
    self.fullName = fullName
    self.profilePic = profilePic
    self.key = key
    self.ref = FIRDatabase.database().reference()

}

init(snapshot: FIRDataSnapshot){


    self.backgroundProfileImage = value["backgroundProfileImage"] as! String!
    self.fullName = (snapshot.value as! NSDictionary)["fullName"] as! String
    self.profilePic = (snapshot.value as! NSDictionary)["profilePic"] as! String
    self.uid = (snapshot.value as! NSDictionary)["uid"] as! String!
    self.key = snapshot.key
    self.ref = snapshot.ref

}

guestViewController

class guestProfileViewController: UIViewController, UINavigationControllerDelegate {

    @IBOutlet weak var profileImage: UIImage!

    @IBOutlet weak var backgroundProfileImage: UIImageView!

    @IBOutlet weak var fullNameLabel: UILabel!

    var ref: FIRDatabaseReference?

    override func viewDidLoad() {
        super.viewDidLoad()

    ref = FIRDatabase.database().reference()

    loadProfileData()

    }

func loadProfileData(){

    if let ref = ref {

    ref.observe(.value, with: { (user) in

        let user: User = User(snapshot: user)


                self.fullNameLabel.text = user.fullName

                self.profileImage.sd_setImage(with: URL(string: user.profilePic), placeholderImage: UIImage(named: "default"))

                self.backgroundProfileImage.sd_setImage(with: URL(string: user.backgroundProfileImage), placeholderImage: UIImage(named: "default_1"))
                })


            }

        }

    }

ref是在guestProfileViewController的viewDidLoad()中设置的。 尝试删除该位,因为您希望参考与用户的参考相等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM