Je construis une application rapide grâce à l'utilisation de Firebase, dans ma base de données Firebase J'ai des restaurants (childs) avec l'information. J'ai réussi à intégrer Firebase à mon projet et à remplir mon tableview avec des données Firebase avec des images grâce à l'utilisation de SDWebImage. Cependant maintenant je suis coincé avec d'autres questions concernant l'utilisation de segue et la récupération des données correctes de ma base de données Firebase en cliquant sur ma cellule de table. Dans le passé, j'ai réussi à construire plusieurs vues de table rapide et objective-c avec detailViewControllers, mais c'est ma première expérience avec firebase. Merci d'avance :) Ci-dessous je me passe mes codes de Xcode:Comment recevoir des données Firebase spécifiques au viewcontroller en cliquant sur tableviewcell?
principal Tableview: importation UIKit importation Firebase importation FirebaseAuth importation FirebaseDatabase importation FirebaseStorage importation SDWebImage
classe MainTableVC: UITableViewController {
@IBOutlet weak var MenuBar: UIBarButtonItem!
var barName = [String]()
var barMainImage = [String]()
var barAddress = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
MenuBar.target = self.revealViewController()
MenuBar.action = #selector(SWRevealViewController.revealToggle(_:))
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
getDataFromServer()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func getDataFromServer(){
Database.database().reference().child("aktau").observe(DataEventType.childAdded, with: { (snapshot) in
let values = snapshot.value! as! NSDictionary
let posts = values["barmain"] as! NSDictionary
let postIDs = posts.allKeys
for id in postIDs{
let singlePost = posts[id] as! NSDictionary
self.barName.append(singlePost["barname"] as! String)
self.barAddress.append(singlePost["baraddress"] as! String)
self.barMainImage.append(singlePost["barmainimage"] as! String)
}
self.tableView.reloadData()
})
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return barName.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RestoCell", for: indexPath) as! ViewControllerCell
cell.RestName.text = barName[indexPath.row]
cell.RestAddress.text = barAddress[indexPath.row]
cell.RestImage.sd_setImage(with: URL(string: barMainImage[indexPath.row]))
return cell
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "DetailView") {
let VC = segue.destination as! DetailViewController
VC.RestNameData = barName
}
}} problème avec barName - '? String'
Impossible d'affecter la valeur de type '[chaîne]' taper
Et mon detailViewController En plus de la BarName, BarAddress et BarMainImage - je voudrais inclure des informations à court bar et le temps d'ouverture.
importation UIKit importation Firebase importation FirebaseAuth importation FirebaseDatabase importation FirebaseStorage importation SDWebImage
classe DetailViewController: UIViewController {
@IBOutlet weak var MyScroll: UIScrollView!
@IBOutlet weak var RestDetailView: UIView!
@IBOutlet weak var restName: UILabel!
@IBOutlet weak var restTypeOfFood: UILabel!
@IBOutlet weak var restClockImage: UIImageView!
@IBOutlet weak var restOpenHours: UILabel!
@IBOutlet weak var restInfoView: UIView!
@IBOutlet weak var averagePrice: UILabel!
@IBOutlet weak var InfoAboutRest: UILabel!
@IBOutlet weak var FullAddressLabel: UILabel!
@IBOutlet weak var OpeningHoursLabel: UILabel!
var RestNameData: String?
override func viewDidLoad() {
super.viewDidLoad()
self.RestDetailView.layer.borderColor = UIColor.white.cgColor
self.RestDetailView.layer.borderWidth = 1
self.restInfoView.layer.borderColor = UIColor.white.cgColor
self.restInfoView.layer.borderWidth = 1
if RestNameData.text == "" {
}
}
}
Mon Firebase Base de données Arbre: enter image description here
s'il est possible peut vous montrer exemple complet de code) J'ai un problème quand je suis ecrivais barres var = [bar] () var selectedBar: Barre? – didayo
J'ai ajouté le code pour résoudre ce problème. –
Malheureusement, je n'ai pas vraiment la structure) J'ai essayé plusieurs façons, mais je aurais toujours une erreur) – didayo