Swift Table 查看单元格更改数据

Swift Table View Cell Changing Data

我有 table 视图控制器。我的问题;每次进入视图控制器时,table 视图中的单元格都会发生变化。例如;有 2 个数据(地址 1 和地址 2)。第一行是 address-1,第二行是 address-2,当我重新进入页面时,单元格发生变化。我该如何解决这个问题。谢谢

import UIKit
import Firebase
import MapKit
class DenemeTableViewController: UITableViewController {

var ref: DatabaseReference!
let user: User = Auth.auth().currentUser!
var adresListesi = [Adresler]()
var adres: Adresler!
@IBOutlet var table: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.table.delegate = self
    self.table.dataSource = self
    Adresdefteri()
}
override func viewWillAppear(_ animated: Bool) {
    Adresdefteri()
    table.reloadData()
}
override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return adresListesi.count
}
  //prob.   
  override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! DenemeTableViewCell
    let adresList = self.adresListesi[indexPath.row]
    cell.textLabel?.text = adresList.adresname
    return cell
}
   override func tableView(_ tableView: UITableView, didSelectRowAt indexPath:IndexPath) {
    self.performSegue(withIdentifier: "DENEMEHARİTAGO", sender: indexPath.row)
}
 func Adresdefteri() {
    ref = Database.database().reference()
    let adreslerim = ref
    adreslerim?.child("locations").child(user.emailWithoutSpecialCharacters).child("Adresler").observe( .value) { [self] (snapshot) in
        if let gelenVeributunu = snapshot.value as? [String:AnyObject]{
            self.adresListesi.removeAll()
             for gelenSatirVerisi in gelenVeributunu {
                if let sozluk = gelenSatirVerisi.value as? NSDictionary {
                    let key = gelenSatirVerisi.key
                    let adresname = sozluk["adresname"] as? String ?? ""
                    let latitude = sozluk["latitude"] as? Double ?? 0.0
                    let longitude = sozluk["longitude"] as? Double ?? 0.0
                    let coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
                    let adres = Adresler(adresname: adresname, latitude: latitude, longitude: longitude, adresid: key)
                    self.adresListesi.append(adres)
                }
            }
            DispatchQueue.main.async {
                self.table.reloadData()
            }
        }
    }

tableview

在创建数据源数组并重新加载 table 视图后对其进行排序,这样它会保持一致。干杯!

    self.arrayName = arrayName.sorted(by: { [=10=].valueToSortByInArray > .valueToSortByInArray })

您只需要对 adresListesti 进行排序以确保顺序一致即可。 一个例子是:

adresListesi.sort { [=10=].adresname < .adresname }

把它放在 DispatchQueue.main.async 之前应该可以。