在swift中获取tableview单元格值nil

在swift中获取tableview单元格值nil,swift,tableview,Swift,Tableview,我有三个部分的tableview。每个部分都有一行。在我的模拟器屏幕中,仅显示两个部分。如果我滚动表格视图,将显示第三个单元格。有一个保存按钮,通过单击它,我将数据传递给另一个视图控制器。如果我不滚动tableview并单击save按钮,则第三部分的单元格为nil 我的代码是:- let indexPath = IndexPath(row: 0, section: 0) let indexPath1 = IndexPath(row: 0, section: 1)

我有三个部分的tableview。每个部分都有一行。在我的模拟器屏幕中,仅显示两个部分。如果我滚动表格视图,将显示第三个单元格。有一个保存按钮,通过单击它,我将数据传递给另一个视图控制器。如果我不滚动tableview并单击save按钮,则第三部分的单元格为nil

我的代码是:-

let indexPath = IndexPath(row: 0, section: 0)
        let indexPath1 = IndexPath(row: 0, section: 1)
        let indexPath2 = IndexPath(row: 0, section: 2)
        let cell1 = tableView.cellForRow(at: indexPath) as? PatientInformationTableViewCell
        let cell2 = tableView.cellForRow(at: indexPath1) as? PatientAdressTableViewCell
        let cell3 = tableView.cellForRow(at: indexPath2) as? OtherInfoTableViewCell

 guard let name = nameTextField.text,
            let id = cell1.patientTextField.text,
            let dob = cell1.dobTextField.text,
            let street = cell1.streetAdressTextField.text,
            let city = cell2.cityTextField.text,
            let state = cell2.stateTextField.text,
            let zip = cell2.zipTextField.text,
            let country = cell2.CountryTextField.text,
            let practioner = cell3.practionerTextField.text,
            let lcode = cell3.lcodeTextField.text,
            let qty = cell3.qtyTextField.text,
            let prescription = cell3.PrescriptionTextView.text,
            let klLevel = cell3.kLevelTextField.text,
            let deviceType = cell3.deviceTypeTextField.text,
        let guardian = cell3.guardianTextField.text,
        let relationship = cell3.relationshipwithPatient.text
        
        else {
            return
        }
        
        let patient = PatientInformationModel(name: name, id: id, dob: dob, streetAdress: street, city: city, state: state, zip: zip, country: country, klevel: klLevel, deviceType: deviceType, visitType: "visitType", deliveryLocation: "deliveryLocation", lCode: lcode, qty: qty, descripePrescription: prescription, practioner: practioner, guardian: guardian, relationship: relationship)
       
        
        let encoder = JSONEncoder()
        if let encoded = try? encoder.encode(patient) {
            let defaults = UserDefaults.standard
            defaults.set(encoded, forKey: "SavedPerson")
        }
        
        
        if let storyBoard = UIStoryboard(name: "Pdf", bundle: nil) as? UIStoryboard{
            captureSignature { (sign) in
                signatureImage = sign?.image
                print("signature image is \(signatureImage)")
                
            }
             let PatientListViewController = storyBoard.instantiateViewController(identifier: "GeneratePdfViewController") as? GeneratePdfViewController

            PatientListViewController?.signatureImage = signatureImage
                              self.navigationController?.pushViewController(PatientListViewController!, animated: true)
            }

在上面的代码中,如果我点击save按钮而没有滚动到底部,我得到的cell3值为零。有任何原因吗。请帮助我。

这是正确的,因为单元格仅在UI中需要时创建。它们不打算用作存储容器。将信息保存在数据模型中并使用该模型进行保存。Hi@PhillipMills感谢您的回复。我还是把3号牢房归为零。你当然是。这就是为什么你不应该依赖单元格来获取数据。好的。那么如何完成这个任务呢?cell3中也存在textfield。我想将所有数据传递给另一个viewcontroller。请建议任何其他解决方案。“将信息保存在数据模型中,并将其用于保存。”(并用于传递给其他控制器。)这是正确的,因为单元格仅在UI中需要时创建。它们不打算用作存储容器。将信息保存在数据模型中并使用该模型进行保存。Hi@PhillipMills感谢您的回复。我还是把3号牢房归为零。你当然是。这就是为什么你不应该依赖单元格来获取数据。好的。那么如何完成这个任务呢?cell3中也存在textfield。我想将所有数据传递给另一个viewcontroller。请建议任何其他解决方案。“将信息保存在数据模型中,并使用该模型进行保存。”(以及传递给其他控制器。)