У меня есть ViewController
с TableView
внутри.У меня также есть TableViewCell
контроллер.
Каждая ячейка моей таблицы содержит информацию от Firebase и кнопку.
Цель здесь - добавить в мою базу данных информацию о моей ячейке, когда янажмите на кнопку.
По сути, у меня есть список песен с add button
на каждой, и я хочу добавить песню в свою учетную запись, когда нажимаю add
.
Список песен хорошо отображается, но я не знаю, как поместить информацию из этой песни в мою базу данных, когда нажимаю кнопку «Добавить».
Код модели:
import Foundation
class ServiceModel {
var name: String?
var category: String?
var pricing: String?
init(name: String?, category: String?, pricing: String?){
self.name = name
self.category = category
self.pricing = pricing
}
}
Код TableViewCell:
class PopularTableViewCell: UITableViewCell {
@IBOutlet weak var imageService: UIImageView!
@IBOutlet weak var labelName: UILabel!
@IBOutlet weak var labelCategory: UILabel!
@IBOutlet weak var labelPricing: UILabel!
Код ViewController:
import UIKit
import FirebaseDatabase
import FirebaseAuth
class AddSubViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
var refServices:DatabaseReference!
@IBOutlet weak var ListPop: UITableView!
var serviceList = [ServiceModel]()
var databaseHandle:DatabaseHandle?
let userID = Auth.auth().currentUser?.uid
@IBAction func addSub(_ sender: Any) {
let ref = Database.database().reference()
let usersReference = ref.child("users")
let uid = Auth.auth().currentUser?.uid
let thisUserReference = usersReference.child(uid!).child("subs").childByAutoId()
thisUserReference.setValue("test")
**// I want to put the pricing value of the song of my cell instead of "test" in: setValue("test")**
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return serviceList.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PopCell", for: indexPath) as! PopularTableViewCell
let service: ServiceModel
service = serviceList[indexPath.row]
cell.imageService?.image = UIImage(named: service.name! + ".png")
cell.labelName?.text = service.name
cell.labelCategory?.text = service.category
cell.labelPricing?.text = service.pricing
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
ListPop.delegate = self
ListPop.dataSource = self
refServices = Database.database().reference().child("Categories")
refServices.observe(DataEventType.value, with: { (snapshot) in
if snapshot.childrenCount > 0 {
self.serviceList.removeAll()
for services in snapshot.children.allObjects as! [DataSnapshot] {
let serviceObject = services.value as? [String: AnyObject]
let serviceName = serviceObject?["Name"]
let serviceCategory = serviceObject?["Category"]
let servicePricing = serviceObject?["Pricing"] as! String + " €"
let service = ServiceModel(name: serviceName as! String?, category: serviceCategory as! String?, pricing: servicePricing as String?)
self.serviceList.append(service)
}
self.ListPop.reloadData()
}
})
}
}
Я хочу указать значение ценыпесня моей ячейки вместо "теста" в: setValue("test")