添加的Tableview数据不存在,为什么在swift中?

添加的Tableview数据不存在,为什么在swift中?,swift,uitableview,uinavigationcontroller,Swift,Uitableview,Uinavigationcontroller,我正在将数据从第三个视图控制器发送到第一个视图控制器,现在是第一次将数据添加到tableview,但是如果从第一个视图控制器发送到另一个视图控制器,然后我返回到第一个视图控制器,那么表视图中添加的数据会出现为什么 在第三视图中,控制器向第一视图控制器表视图发送数据,如下所示: var viewController: UIViewController? @IBAction func confirmBtn(_ sender: Any) { for controller in navigati

我正在将数据从第三个视图控制器发送到第一个视图控制器,现在是第一次将数据添加到tableview,但是如果从第一个视图控制器发送到另一个视图控制器,然后我返回到第一个视图控制器,那么表视图中添加的数据会出现为什么

在第三视图中,控制器向第一视图控制器表视图发送数据,如下所示:

var viewController: UIViewController?

@IBAction func confirmBtn(_ sender: Any) {
   for controller in navigationController?.viewControllers ?? [] {
        if let listController =  controller as? ProfileViewController {
            guard let string = addressLabel.text else { return }//"\(sublocalityName ?? "") \(zipName ?? "") \(localityName ?? "")"
            listController.addressArray.append(string)
            navigationController?.popToViewController(controller, animated: true)
            return
        }
    }
}
 @IBOutlet weak var addeditTableview: UITableView!
var addressArray = [String]()

 override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.navigationBar.isHidden=true
    addeditTableview.reloadData()
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return addressArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

   // let cell: EditAddressTableViewCell = addeditTableview.dequeueReusableCell(withIdentifier: "EditAddressTableViewCell") as! EditAddressTableViewCell

    let cell = tableView.dequeueReusableCell(withIdentifier: "EditAddressTableViewCell", for: indexPath) as! EditAddressTableViewCell

    cell.editButton.addTarget(self, action: #selector(editbuttonClicked(sender:)), for: .touchUpInside)
       cell.nameHeader.text = "Other"
        cell.addressLabel.text = addressArray[indexPath.row]//"\(city) \(pincode) \(locality)"

    return cell
}
在第一视图中,控制器向tableview添加数据,如下所示:

var viewController: UIViewController?

@IBAction func confirmBtn(_ sender: Any) {
   for controller in navigationController?.viewControllers ?? [] {
        if let listController =  controller as? ProfileViewController {
            guard let string = addressLabel.text else { return }//"\(sublocalityName ?? "") \(zipName ?? "") \(localityName ?? "")"
            listController.addressArray.append(string)
            navigationController?.popToViewController(controller, animated: true)
            return
        }
    }
}
 @IBOutlet weak var addeditTableview: UITableView!
var addressArray = [String]()

 override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.navigationBar.isHidden=true
    addeditTableview.reloadData()
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return addressArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

   // let cell: EditAddressTableViewCell = addeditTableview.dequeueReusableCell(withIdentifier: "EditAddressTableViewCell") as! EditAddressTableViewCell

    let cell = tableView.dequeueReusableCell(withIdentifier: "EditAddressTableViewCell", for: indexPath) as! EditAddressTableViewCell

    cell.editButton.addTarget(self, action: #selector(editbuttonClicked(sender:)), for: .touchUpInside)
       cell.nameHeader.text = "Other"
        cell.addressLabel.text = addressArray[indexPath.row]//"\(city) \(pincode) \(locality)"

    return cell
}
添加表视图后,如果我转到其他视图控制器,并且如果我返回到表视图,那么附加值不会出现,为什么?
请在代码方面提供帮助。

我建议使用“展开”序列,而不是遍历所有ViewController来查找包含表视图的VC并通过该引用传递数据

有关如何实施展开分段的更多信息,请查看此链接:


查看此stackoverflow答案以获取更多帮助:

我建议使用“展开”序列,而不是遍历所有ViewController来查找包含表视图的VC并通过该引用传递数据

有关如何实施展开分段的更多信息,请查看此链接:


查看此stackoverflow答案以获取更多帮助:

因为您的
var addressArray=[String]()
始终为空,直到您单击
@IBAction func confirbtn(uu-sender:Any){…}
此函数在第三个视图上并弹出到第一个视图

每次转到firstviewcontroller时(除了第三个按钮的操作)
addressArray
变量将为空


您可以使用
global
array来修复它,或者创建一个结构并向结构的数组属性添加值。

因为您的
var-addressArray=[String]()
始终为空,直到您在第三个视图中单击
@iAction-func-confirmtn(sender:Any){…}/code>此函数并弹出到第一个视图

每次转到firstviewcontroller时(除了第三个按钮的操作)
addressArray
变量将为空


您可以使用
global
array来修复它,或者创建一个结构并向结构的数组属性添加值。

声明一个全局变量,而不是所有这些

var addressArray : [String] = []
然后从任何视图控制器更新值,当您返回到第一个视图控制器时,在
视图中将出现
重新加载您的
表视图

 override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.navigationBar.isHidden=true
    addeditTableview.reloadData()
}
您的
ThirdViewController
现在应该是这样的

@IBAction func confirmBtn(_ sender: Any) {
    guard let string = addressLabel.text else { return }
    addressArray.append(string)
    navigationController?.popToViewController(controller, animated: true)
}

与其所有这些,不如声明一个全局变量

var addressArray : [String] = []
然后从任何视图控制器更新值,当您返回到第一个视图控制器时,在
视图中将出现
重新加载您的
表视图

 override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.navigationBar.isHidden=true
    addeditTableview.reloadData()
}
您的
ThirdViewController
现在应该是这样的

@IBAction func confirmBtn(_ sender: Any) {
    guard let string = addressLabel.text else { return }
    addressArray.append(string)
    navigationController?.popToViewController(controller, animated: true)
}

当您回来查看其他ViewController不是您的第三个控制器时,是否希望数据已经存在?当您回来查看其他ViewController不是您的第三个控制器时,是否希望数据已经存在?