繁体   English   中英

Swift 表格查看单元格更改数据

[英]Swift Table View Cell Changing Data

我有表格视图 controller。 我的问题; 每次我进入视图 controller 时,表格视图中的单元格都会发生变化。 例如; 有 2 个数据(地址 1 和地址 2)。 第一行是地址1,第二行是地址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()
            }
        }
    }

表视图

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

    self.arrayName = arrayName.sorted(by: { $0.valueToSortByInArray > $1.valueToSortByInArray })

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

adresListesi.sort { $0.adresname < $02.adresname }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM