我正在尝试将值从一个视图控制器-OtherViewController
发送到另一个视图控制器-Add_EditAddressViewController
。我正在将值发送到第二个视图控制器(addressArray
)中的数组。
这里是第一个视图控制器:
class OtherViewController: UIViewController {
...
@IBAction func confirmBtn(_ sender: Any) {
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "Add_EditAddressViewController") as! Add_EditAddressViewController;
viewController.pincode = zipName
viewController.city = sublocalityName
viewController.locality = localityName
navigationController?.pushViewController(viewController, animated: true);
}
}
然后,我在下面将addressArray
中的值添加到OtherViewController
中,如下所示:
class Add_EditAddressViewController: UIViewController {
var addressArray = [String]()
var city: String?
var pincode: String?
var locality: String?
override func viewDidLoad() {
super.viewDidLoad()
addressArray.append("\(city ?? "") \(pincode ?? "") \(locality ?? "")")
addressEDITTableview.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.nameHeader.text = "header"
cell.addressLabel.text = addressArray[indexPath.row]
return cell
}
}
但是,在表格视图中,我只能得到一行。第一次,单行是可以的,但是如果我添加另一个地址-该行将替换为新地址,而我将不再获得旧地址。如何在表格视图中显示所有添加的地址?
[addressArray
每次您移回屏幕时都会被释放。您应该在Add_EditAddressViewController
中声明它,然后仅在其中附加数据,然后将其发送到otherviewcontroller
var addressArray : [String] = []
@IBAction func confirmBtn(_ sender: Any) {
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "Add_EditAddressViewController") as! Add_EditAddressViewController;
self.addressArray.append("\(sublocalityName ?? "") \(zipName ?? "") \(localityName ?? "")")
vc.addressArray = self.addressArray
self.navigationController?.pushViewController(viewController, animated: true);
}
然后在您的otherViewController
中>
var addressArray : [String] = [] {
didSet {
self.tableView.reloadData()
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
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.nameHeader.text = "header"
cell.addressLabel.text = addressArray[indexPath.row]
return cell
}
}
将数组存储在函数范围之外,并继续向同一数组而不是新实例中添加新元素。