将数据从 tableviewcontroller 传递到 swift 中的另一个 tableviewcontroller

pass data from tableviewcontroller to another tableviewcontroller in swift

我正在创建一个表单

此表单填充了用户输入的文本字段。回答完所有问题后会弹出保存按钮。

我在使此 tableviewcontroller 将数据传递给新的 tableviewcontroller 时遇到问题。我被卡住了,不知道该怎么做。

import UIKit

class TableViewController: UITableViewController, UITextFieldDelegate {

    @IBOutlet weak var saveBtn: UIButton!

    @IBOutlet var firstNameField: UITextField!
    @IBOutlet var middleNameField: UITextField!
    @IBOutlet weak var lastNameField: UITextField!
    @IBOutlet weak var addressField: UITextField!
    @IBOutlet weak var aptNumField: UITextField!
    @IBOutlet weak var cityField: UITextField!
    @IBOutlet weak var stateField: UITextField!
    @IBOutlet weak var zipField: UITextField!
    @IBOutlet weak var phoneOneField: UITextField!
    @IBOutlet weak var phoneTwoField: UITextField!
    @IBOutlet weak var allergiesField: UITextField!
    @IBOutlet weak var DobField: UILabel!
    @IBOutlet weak var sexField: UILabel!
    @IBOutlet weak var hospitalField: UITextField!
    @IBOutlet weak var doctorField: UITextField!

  override func viewDidLoad() {
        super.viewDidLoad()

        //Notifications to push datepicker
        NotificationCenter.default.addObserver(forName: .saveDateTime, object: nil, queue: OperationQueue.main) { (notification) in
            let dateVc = notification.object as! DatePopupViewController
            self.DobField.text = dateVc.formattedDate
        }

        //Notifications to push genderpicker
        NotificationCenter.default.addObserver(forName: .saveGender, object: nil, queue: OperationQueue.main) { (notification) in
            let genderVc = notification.object as! GenderPopupViewController
            self.sexField.text = genderVc.selectedGender
        }

                updateWidthsForLabels(labels: labels)
    }

    //Save Button Function
    func textFieldDidChange(_ textField: UITextField) {
        if textField == firstNameField || textField == lastNameField || textField == middleNameField || textField == addressField || textField == lastNameField || textField == cityField || textField == cityField || textField == stateField || textField == zipField || textField == phoneOneField || textField == phoneTwoField || textField == allergiesField {

            saveBtn.isHidden = true
        } else {
            saveBtn.isHidden = false
        }
    }

  @IBAction func saveBtnPressed(_ sender: Any) {


        performSegue(withIdentifier: "saveFirstPageSegue", sender: self)

}

}

如何开始创建模型:

Form.swift

struct Form {
    var firstname: String?
    var middlename: String?
   ....
    var doctor: String?

    init(firstname: String, middlename: String, ..., doctor: String) {
        self.firstname = firstname
        self.middlename = middlename
        ...
        self.doctor = doctor
    }

}

现在您可以在保存数据并将数据推送到新 VC:

时创建此表单实例

你的当前Form.swift

@IBAction func saveBtnPressed(_ sender: Any) {
    let formData = Form(firstname: firstNameField.text, middlename: middleNameField.text, ..., doctor: doctorField.text)
    let newVC = myNewViewController()
    newVC.form = formData
    self.navigationController?.pushViewController(newVC, animated: true)
}

NewViewController.swift

class myNewViewController: UIViewController {

    var form: Form?

    .....

}

更新:

这是回购协议:https://github.com/FlorianLdt/LFEasyDelegate

有问题就问我

希望对您有所帮助。

第一个选项 - 结构 - 首选

使用结构体:

struct Manager
{
 static var value : String = ""
}

Noe 只需调用

即可更新该函数的值
Manager.value = "newValue"

在任何地方访问该值 将其分配给其他变量

let newStr : String = Manager.value

第二个选项 - AppDelegate - 不理想

在 AppDelegate 中创建新对象

现在创建一个新对象来访问 appDelegate

let appDel = UIApplication.shared.delegate as! AppDelegate

访问值并更新如下

appDel.Frequency = 1.0

第三个选项 - NSObjectClass

创建一个新的 NSObject class 如下

//NSObjectclass第一次加载到内存栈时创建的实例

static let shared = wrapperClass()

//在Object中创建一个全局访问的值class

var newValueInClass : String = ""

现在是时候访问创建的对象了

wrapperClass.shared.newValueInClass = "iosGeek"

现在在任何地方写下这行

print(wrapperClass.shared.newValueInClass)

控制台输出

最好用struct classes全局管理数据