ISSUE HAS BEEN FIXED. SEE POST: https://forums.developer.apple.com/message/374921#374921
hello everyone, i'm new at coding and if possible i need help with my app. i'm trying to perform a segue from a button inside a custom cell to another VC. The button inside the cell is querying data from Firebase and grabbing the results from a query and using them to do a bigger query, then it needs to send the data in another VC. Every label within the cell has a value, i dont understand why the SEGUE is not working as excpected. Any help is greatly appreciated. Thank you!
**Cell Protocol**
protocol MyCellDelegate: class {
func sendDataFromCell(_ sender: Any)
}
**CustomCell: ptlistCell**
import UIKit
import Firebase
import FirebaseFirestore
class ptlistCell: UITableViewCell {
@IBOutlet private weak var ptnameLbl: UILabel!
@IBOutlet private weak var assignedmdLbl: UILabel!
@IBOutlet private weak var officemdLbl: UILabel!
@IBOutlet private weak var roomnumberLbl: UILabel!
@IBOutlet private weak var seenoseeLbl: UILabel!
@IBOutlet private weak var assigneddateLbl: UILabel!
@IBOutlet weak var ptdataBtn: UIButton!
var ptdatainfoRef: CollectionReference!
var query: Query?
var patdata = [PTData]()
var delegate: MyCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
ptdatainfoRef = Firestore.firestore().collection(PTLIST_REF)
}
func configureCell(ptlist: PTList) {
ptnameLbl.text = ptlist.ptname
assignedmdLbl.text = ptlist.assignedmd
officemdLbl.text = ptlist.officemd
roomnumberLbl.text = ptlist.room
seenoseeLbl.text = ptlist.seenosee
assigneddateLbl.text = ptlist.assigneddate
}
@IBAction func ptdataTapped(_ sender: Any) {
let query = ptdatainfoRef.whereField("ptname", isEqualTo: (ptnameLbl.text!))
.whereField("assignedmd", isEqualTo: (assignedmdLbl.text!))
.whereField("officemd", isEqualTo: (officemdLbl.text!))
.whereField("room", isEqualTo: (roomnumberLbl.text!))
.whereField("seenosee", isEqualTo: (seenoseeLbl.text!))
.whereField("assigneddate", isEqualTo: (assigneddateLbl.text!))
query.getDocuments { (snapshot, error) in
if let err = error {
debugPrint("error getting data: \(err)")
} else {
guard let snap = snapshot else { return }
for document in snap.documents {
let data = document.data()
let ptname = data[PTNAME] as? String ?? ""
let dob = data[DOB] as? String ?? ""
let fin = data[FIN] as? String ?? ""
let officemd = data[OFFICEMD] as? String ?? ""
let assignedmd = data[ASSIGNEDMD] as? String ?? ""
let assigneddate = data[ASSIGNEDDATE] as? String ?? ""
let room = data[ROOM] as? String ?? ""
let diagnoses = data[DIAGNOSES] as? String ?? ""
let reasonforadmitorconsult = data[REASONFORADMITORCONSULT] as? String ?? ""
let goalofhospitalization = data[GOALOFHOSPITALIZATION] as? String ?? ""
let seenosee = data[SEENOSEE] as? String ?? ""
let notestocbo = data[NOTESTOCBO] as? String ?? ""
let comments = data[COMMENTS] as? String ?? ""
let hosp = data[HOSP] as? String ?? ""
let team = data[TEAM] as? String ?? ""
let newPtdata = PTData (ptname: ptname, dob: dob, fin: fin, officemd: officemd, assignedmd: assignedmd, assigneddate: assigneddate, room: room, diagnoses: diagnoses, reasonforadmitorconsult: reasonforadmitorconsult, goalofhospitalization: goalofhospitalization, seenosee: seenosee, notestocbo: notestocbo, comments: comments, hosp: hosp, team: team)
self.patdata.append(newPtdata)
print(document.data())
};print(self.delegate)
if(self.delegate != nil) {
self.delegate?.sendDataFromCell(sender)
}
}
}
}
}
**firstVC w customCell (ptlistcell)**
import UIKit
import Firebase
class resultsdataVC: UIViewController, UITableViewDataSource, UITableViewDelegate, MyCellDelegate {
@IBOutlet weak var tableView: UITableView!
var ptlist: PTList!
var ptlists = [PTList]()
var tableVc: patdataVC!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return ptlists.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "ptlistCell", for: indexPath) as? ptlistCell {
cell.configureCell(ptlist: ptlists[indexPath.row])
return cell
}
return UITableViewCell()
}
func sendDataFromCell(_ sender: Any) {
performSegue(withIdentifier: "gotoptdata", sender: (Any).self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "gotoptdata" {
tableVc = segue.destination as? patdataVC
tableVc.tableViewCellDelegate = self as? MyCellDelegate
}
}
}
**secondVC w customCell (ptdataCell)**
import UIKit
import Firebase
import FirebaseFirestore
class patdataVC: UIViewController, UITableViewDelegate, UITableViewDataSource {
var ptdata: PTData!
var patdata = [PTData]()
var tableViewCellDelegate: MyCellDelegate?
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return patdata.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "ptlistCell"
guard let cell = tableView.dequeueReusableCell(withIdentifier: "ptdataCell", for: indexPath) as? ptlistCell else {
fatalError("The dequeued cell is not an instance of TableViewCell.")
}
cell.delegate = tableViewCellDelegate
return cell
}
}
**CustomCell: ptdataCell**
import UIKit
import Firebase
class ptdataCell: UITableViewCell {
@IBOutlet weak var ptnameLbl2: UILabel!
@IBOutlet weak var dobLbl2: UILabel!
@IBOutlet weak var finLbl2: UILabel!
@IBOutlet weak var officemdLbl2: UILabel!
@IBOutlet weak var assignedmdLbl2: UILabel!
@IBOutlet weak var assigneddateLbl2: UILabel!
@IBOutlet weak var roomLbl2: UILabel!
@IBOutlet weak var diagnosesLbl2: UILabel!
@IBOutlet weak var reasonforadmitorconsultLbl2: UILabel!
@IBOutlet weak var goalofhospitalizationLbl2: UILabel!
@IBOutlet weak var seenoseeLbl2: UILabel!
@IBOutlet weak var notestocboLbl2: UILabel!
@IBOutlet weak var commentsLbl2: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
func configureCell(patdata: PTData) {
ptnameLbl2.text = patdata.ptname
dobLbl2.text = patdata.dob
finLbl2.text = patdata.fin
officemdLbl2.text = patdata.officemd
assignedmdLbl2.text = patdata.assignedmd
assigneddateLbl2.text = patdata.assigneddate
roomLbl2.text = patdata.room
diagnosesLbl2.text = patdata.diagnoses
reasonforadmitorconsultLbl2.text = patdata.reasonforadmitorconsult
goalofhospitalizationLbl2.text = patdata.goalofhospitalization
seenoseeLbl2.text = patdata.seenosee
notestocboLbl2.text = patdata.notestocbo
commentsLbl2.text = patdata.comments
}
}