Post marked as solved
Post marked as solved with 8 replies, 1,241 views
ISSUE HAS BEEN FIXED - CODE HAS BEEN UPDATED.Good afternoon, I'm running a query in Firebase and the info i get back i use it to run another query. The issue i'm having is displaying the data on the second CustomCell. I'm using the print statement and data is showing in the console. Segues are working as expected, TableViews are setup as datasource and delegate, IBOutlets are in place, Cell identifiers in Storyboard are in place too....i cannot find a solution for it, i'm not sure what i'm missing. Any help is greatly appreciated. Cell Protocolprotocol MyCellDelegate {
func cellButtonPressed (_ ptdatas: [PTData])
}Cell with Second queryclass PatlistCell: UITableViewCell {
@IBOutlet weak var ptnameLbl: UILabel!
@IBOutlet weak var assignedmdLbl: UILabel!
@IBOutlet weak var officemdLbl: UILabel!
@IBOutlet weak var roomnumberLbl: UILabel!
@IBOutlet weak var seenoseeLbl: UILabel!
@IBOutlet weak var assigneddateLbl: UILabel!
@IBOutlet weak var ptdataBtn: UIButton!
var ptdatas = [PTData]()
var ptdatainfoRef: CollectionReference!
var delegate: MyCellDelegate?
var patDataQuery: Query!
override func awakeFromNib() {
super.awakeFromNib()
ptdatainfoRef = Firestore.firestore().collection(PTLIST_REF)
}
func configurePatListCell(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 patDataQuery = 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!))
patDataQuery.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.ptdatas.append(newPtdata)
print(document.data())
}
}
self.delegate?.cellButtonPressed(self.ptdatas)
}
}
}First ViewControllerimport UIKit
import Firebase
class ResultsdataVC: UIViewController {
@IBOutlet weak var resultsTableView: UITableView!
var ptlists = [PTList]()
var ptdatas = [PTData]()
override func viewDidLoad() {
super.viewDidLoad()
resultsTableView.delegate = self
resultsTableView.dataSource = self
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "gotoptinfo" {
let destVC = segue.destination as! PatdataVC
destVC.ptdatas = ptdatas
}
}
}
extension ResultsdataVC: UITableViewDataSource, UITableViewDelegate, MyCellDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return ptlists.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == self.resultsTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "PatlistCell", for: indexPath) as? PatlistCell
cell!.configurePatListCell(ptlist: ptlists[indexPath.row])
cell!.delegate = self
return cell!
}
return UITableViewCell()
}
func cellButtonPressed() {
self.ptdatas = ptdatas
performSegue(withIdentifier: "gotoptinfo", sender: self)
}
}Second CustomCellclass PatdataCell: UITableViewCell {
@IBOutlet weak var ptnameLbl: UILabel!
@IBOutlet weak var dobLbl: UILabel!
@IBOutlet weak var finLbl: UILabel!
@IBOutlet weak var officemdLbl: UILabel!
@IBOutlet weak var assignedmdLbl: UILabel!
@IBOutlet weak var assigneddateLbl: UILabel!
@IBOutlet weak var roomnumberLbl: UILabel!
@IBOutlet weak var diagnosesLbl: UILabel!
@IBOutlet weak var reasonforadmitorconsultLbl: UILabel!
@IBOutlet weak var goalofhospitalizationLbl: UILabel!
@IBOutlet weak var seenoseeLbl: UILabel!
@IBOutlet weak var notestocboLbl: UILabel!
@IBOutlet weak var commentsLbl: UILabel!
@IBOutlet weak var hospitalLbl: UILabel!
@IBOutlet weak var teamLbl: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
func configurePatDataCell(ptdata: PTData) {
ptnameLbl.text = ptdata.ptname
dobLbl.text = ptdata.dob
finLbl.text = ptdata.fin
officemdLbl.text = ptdata.officemd
assignedmdLbl.text = ptdata.assignedmd
assigneddateLbl.text = ptdata.assigneddate
roomnumberLbl.text = ptdata.room
diagnosesLbl.text = ptdata.diagnoses
reasonforadmitorconsultLbl.text = ptdata.reasonforadmitorconsult
goalofhospitalizationLbl.text = ptdata.goalofhospitalization
seenoseeLbl.text = ptdata.seenosee
notestocboLbl.text = ptdata.notestocbo
commentsLbl.text = ptdata.comments
hospitalLbl.text = ptdata.hosp
teamLbl.text = ptdata.team
}
}Second ViewControllerclass PatdataVC: UIViewController, UITableViewDelegate, UITableViewDataSource {
var ptdatas = [PTData]()
@IBOutlet weak var patDataTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
patDataTableView.delegate = self
patDataTableView.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return ptdatas.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == patDataTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "PatdataCell", for: indexPath) as? PatdataCell
cell!.configurePatDataCell(ptdata: ptdatas[indexPath.row])
return cell!
}
return UITableViewCell()
}
}