У меня есть два Xib в табличном виде, один - это пользовательская ячейка UITableViewCell Xib, а второй - пользовательский вид UIView xib (который равен footerView
). При нажатии на ячейку даты отображается список встреч. (изображение прилагается для справки). Я получаю данные от SQLite
, а затем записи добавляются в модель.
- Проблема по неизвестной причине, она дублирует список встреч в
footerView
. Сначала, когда он загружает данные, это нормально. Когда я перемещаю / scorll tableView или возвращаюсь к той же самой странице, это показывает дубликат. - Я использовал
for loop
отображение записи списка встреч в footerView. (в cellForRowAt ) - Я проверил, но нет повторяющихся данных, добавляемых в массив модель
var downloadAppData: [DownloadDisplay] = []
Как избежать дублирования строк представления нижнего колонтитула в ячейке TableView?
замедление: var downloadAppData: [DownloadDisplay] = []
Модель:
struct DownloadDisplay : Codable {
var date: Int64?
var appointments: [Appointment]?
var progress: Double?
var isFinished: Bool?
}
struct Appointment : Codable {
let appointmentHour : String?
let backgroundColorDark : String?
let backgroundColorLight : String?
let controlHour : String?
let date : String?
let id : Int?
let isProjectManual : Bool?
let projectDistrict : String?
let projectFirmName : String?
let projectName : String?
let projectType : String?
let subTitle : String?
let warmingType : String?
}
TableView:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return downloadAppData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DownloadEntryViewCell", for: indexPath) as! DownloadEntryViewCell
let dic = downloadAppData[indexPath.row]
let content = datasource[indexPath.row]
let appDate = Date(milliseconds: dic.date ?? 0)
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "tr_TR_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
dateFormatter.dateFormat = "dd MMMM yyyy EEEE"
let convertDate = dateFormatter.string(from: appDate)
cell.fileNameLabel.text = "\(convertDate)" + " Randevuları"
var stackHeight:CGFloat = 0.0
// footer view xib.
for i in (dic.appointments)! {
let child_view = Bundle.main.loadNibNamed("FooterView", owner: self, options: nil)?.first as! FooterView
child_view.projName.text = "\(i.projectName ?? "")" + " " + "\(i.subTitle ?? "")"
cell.stackViewFooter.addArrangedSubview(child_view)
stackHeight = stackHeight + 33.0
}
if content.expanded == false {
cell.rightView.backgroundColor = ("#556f7b").toColor()
cell.fileNameLabel.textColor = ("#eceff1").toColor()
cell.progressLabel.textColor = ("#eceff1").toColor()
cell.individualProgress.frame = CGRect(x: 0, y: 69, width: 360, height: 2)
cell.individualProgress.progress = 0
cell.individualProgress.backgroundColor = ("#cfd8dc").toColor()
}
return cell
}