如何在Swift中使用委托将值从第三视图控制器传递到第一视图控制器tableview?

问题描述 投票:0回答:1

我已经在单独的文件中创建了结构:

struct DataEnteredModelSave {
  let pinCode: String
  let streetField: String
  let cityField: String
}

这里我正在为Thirdviewcontroller中的struct添加值,我需要在firstviewcontroller tableview中显示的值

如何将此结构值发送到firstviewcontroller tableview

此代码在我的第三个视图控制器中:

protocol DataEnteredDelegate: class {
func userDidEnterInformation(info: DataEnteredModelSave)
}

class ThirdViewController: UIViewController {
weak var delegate: DataEnteredDelegate? = nil

var zipName: String?
var localityName: String?
var sublocalityName: String?
@IBOutlet weak var mapView: MKMapView!
@IBOutlet weak var addressLabel: UILabel!

@IBAction func confirmBtn(_ sender: Any) {

    let viewController = self.storyboard?.instantiateViewController(withIdentifier: "Add_EditAddressViewController") as! Add_EditAddressViewController
   guard
        let zipName = zipName,
        let sublocalityName = sublocalityName,
        let localityName = localityName
        else { return }
    let enteredData = DataEnteredModelSave(pinCode: zipName, streetField: sublocalityName, cityField: localityName)
    delegate?.userDidEnterInformation(info: enteredData)


           self.navigationController?.pushViewController(viewController, animated: true)

}
extension ThirdViewController: MKMapViewDelegate {

    func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {

            self.localityName = placemark.locality ?? ""
            self.sublocalityName = placemark.subLocality ?? ""
            self.zipName = placemark.postalCode ?? ""

            }
        }
    }
    }

这是第一个视图控制器代码:这里如何获取第三视图控制器zipName,localityName,sublocalityName在tableview单元格标签中

class FirstViewController: UIViewController,DataEnteredDelegate {
@IBOutlet var addressEDITTableview: UITableView!
var city: String?
var pincode: String?
var locality: String?

var addressModelArray = [DataEnteredModelSave]()

 }

extension FirstViewController : UITableViewDelegate,UITableViewDataSource {

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

    return addressModelArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell: EditAddressTableViewCell = tableView.dequeueReusableCell(withIdentifier: "EditAddressTableViewCell") as! EditAddressTableViewCell
    cell.addressLabel.text = addressModelArray[indexPath.row]//here how to get third view controller zipName, localityName, sublocalityName

    return cell
}

请帮助我在表视图中添加值

swift uitableview uinavigationcontroller delegates
1个回答
0
投票

简单的把戏!只需在ThirdViewController的ViewDidLoad中编写:

© www.soinside.com 2019 - 2024. All rights reserved.