arrays - 如果您快速从一个视图控制器移动到另一个视图控制器,如何动态地将值添加到数组中?
问题描述
我需要在Add_EditAddressViewController
tableview 中显示所有添加的地址,为此我创建了一个 ARRAY 并将值附加到数组中NewZoomAddressViewController
以显示在 tableview 中,但我一直在 tableview 中获得单行.. 所以这里如何向数组添加值动态而不替换成 Add_EditAddressViewController 中的旧值
导航是:
Add_EditAddressViewController: butnTap -> ProfileVC: btnTap -> NewZoomAddressViewController: btnTap -> Add_EditAddressViewController
每次我来到 NewZoomAddressViewController 时都需要附加\(self.sublocalityName!) \(localityName!) \(self.zipName!)
到addressArray以显示在 Add_EditAddressViewController 的 tableview 中
注意:这里我在 github 中添加了与此问题相关的代码:https ://github.com/SwiftSamples/AddressBug 在 profileVC 中您需要点击地图或继续按钮,然后导航到 NewZoomAddressViewController
class Add_EditAddressViewController: UIViewController,DataEnteredDelegate {
@IBOutlet weak var addeditTableview: UITableView!
var addressArray = [String]()
var city: String?
var pincode: String?
var locality: String?
override func viewDidLoad() {
super.viewDidLoad()
addeditTableview.register(UINib(nibName: "EditAddressTableViewCell", bundle: nil), forCellReuseIdentifier: "EditAddressTableViewCell")
print("zoooom valuew \(pincode)")
addeditTableview.reloadData()
}
}
extension Add_EditAddressViewController : UITableViewDelegate,UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return addressArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: EditAddressTableViewCell = tableView.dequeueReusableCell(withIdentifier: "EditAddressTableViewCell") as! EditAddressTableViewCell
cell.editButton.addTarget(self, action: #selector(editbuttonClicked(sender:)), for: .touchUpInside)
cell.nameHeader.text = "header"
cell.addressLabel.text = addressArray[indexPath.row]
return cell
}
}
NewZoomAddressViewController 代码:
class NewZoomAddressViewController: UIViewController {
weak var delegate: DataEnteredDelegate? = nil
var addressModel: ProfileModelUserAddress?
var addressArray = [String]()
var zipName: String?
var localityName: String?
var sublocalityName: String?
@IBOutlet weak var mapView: MKMapView!
@IBOutlet weak var addressLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
print("in Zoom map VC")
mapView.delegate = self
addressLabel.text = "\(self.sublocalityName!) \(localityName!) \(self.zipName!)"
}
@IBAction func confirmBtn(_ sender: Any) {
let viewController = storyboard?.instantiateViewController(withIdentifier: "Add_EditAddressViewController") as! Add_EditAddressViewController
addressArray.append("\(sublocalityName ?? "") \(zipName ?? "") \(localityName ?? "")")
viewController.addressArray = addressArray
print("total address array all rows \(viewController.addressArray)")
navigationController?.pushViewController(viewController, animated: true)
}
}
请尝试帮助在表格视图中显示所有添加的地址。我被困在这里很久了。
解决方案
那么你需要做的是在你的个人资料视图中有地址数组并将它传递给其他控制器..所以你的代码变成了
首先,您将在配置文件中有这样的数组
class ProfileAddressViewController: UIViewController, CLLocationManagerDelegate, UISearchBarDelegate, DataEnteredDelegate {
var addressArray = [String]()
}
然后当你打电话时,你NewZoomAddressViewController
像这样将该数组传递给他们
@objc func triggerTouchAction(_ sender: UITapGestureRecognizer) {
print("Please Help!")
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "NewZoomAddressViewController") as! NewZoomAddressViewController
viewController.delegate = self
viewController.zipName = self.pincodeField.text
viewController.sublocalityName = self.colonyField.text
viewController.localityName = self.cityField.text
viewController.addressArray = addressArray
self.navigationController?.pushViewController(viewController, animated: true);
}
在Add_EditAddressViewController
您调用配置文件的地方..将数组分配给配置文件
@objc func editbuttonClicked(sender: UIButton) {
print("in button")
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "ProfileAddressViewController") as! ProfileAddressViewController
viewController.addressArray = addressArray
self.navigationController?.pushViewController(viewController, animated: true)
}
推荐阅读
- http - Netty HTTP 1.1 流水线支持
- regex - Bash Regex 在 Ubuntu 上匹配,但在 macOS 上不匹配
- javascript - 根据 React Redux Store 中的值选中和取消选中复选框
- php - 将目标文件发布到服务器
- r - Shiny html 模板中的循环
- c# - 将值添加到 C# 中的对象列表
- python - 如何在 Sqlite (python) 中检查 TABLE 创建是否成功?
- laravel - Laravel Forge:未找到存储库
- graphql-js - 如何为列表解析器定义参数/参数?
- java - 如何在不使用缓冲区的情况下将文件拆分到位?