Мне нужно получить информационную кнопку , чтобы представить описание продукта из контроллера просмотра таблиц в всплывающее представление контроллера путем передачи данных из моей базы данных Cloud Firestore.
как бы я мог передавать данные из отдельной ячейки табличного представления через информационную кнопку на контроллер ItemInfo.
Я пытаюсь передать данные из табличного представления немного иначе, чем традиционным способом, когдаВы нажимаете ячейку табличного представления, и она сразу же берет вас / передает данные следующему контроллеру представления.
Где я хочу, чтобы вы нажимали кнопку moreInfo в ячейке табличного представления, и она сразу же переносит вас и передает данные в следующий контроллер представления.
У меня для моего табличного просмотра установлено значение "нет выбора"в раскадровке и хотите передавать данные только через MoreInfoButton в ячейках табличного представления (ProductListCell) в MoreInfoController, где вы видите Название продукта, рейтинг и краткое описание.
import UIKit
import Firebase
import FirebaseFirestore
class ProductListController: UIViewController {
@IBOutlet weak var productListTableView: UITableView!
var productInventory: [ProductList] = []
var productSetup: [ProductList] = []
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
override func viewDidLoad() {
super.viewDidLoad()
productListTableView.dataSource = self
productListTableView.delegate = self
searchBar.delegate = self
fetchProducts { (products) in
self.productSetup = products
self.productListTableView.reloadData()
}
}
func fetchProducts(_ completion: @escaping ([ProductList]) -> Void) {
let ref = Firestore.firestore().collection("products")
ref.addSnapshotListener { (snapshot, error) in
guard error == nil, let snapshot = snapshot, !snapshot.isEmpty else {
return
}
completion(snapshot.documents.compactMap( {ProductList(dictionary: $0.data())} ))
}
}
}
extension ProductListController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return productSetup.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "ProductListCell") as?
ProductListCell else { return UITableViewCell() }
cell.configure(withProduct: productSetup[indexPath.row])
return cell
}
}
import UIKit
import Firebase
class ItemInfoController: UIViewController {
var products: ProductList!
@IBOutlet weak var productName: UILabel!
@IBOutlet weak var productDescription: UILabel!
@IBOutlet weak var totalRatings: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
productName.text = "\(products.brand): \(products.name)"
shortDecription.text = products.description
totalRating.text = products.totalRating
}
@IBAction func closeBtn(_ sender: Any) {
dismiss(animated: true, completion: nil)
print("Close More Information")
}
}