Так что каждый раз, когда я прокручиваю свой tableView, он перезагружает данные, которые я нахожу нелепыми, поскольку нет смысла перезагружать данные, поскольку они не были изменены.Поэтому я настроил свой tableView следующим образом:
func numberOfSections(in tableView: UITableView) -> Int {
return self.numberOfElements
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 6
}
Мои ячейки действительно настроены, и им требуется расстояние между ними.Я не мог добавить дополнительный Вид в свою ячейку, чтобы подделать это расстояние, потому что у меня есть угловой радиус, и он просто разрушает его.Поэтому я должен был сделать каждую строку = секцию и установить интервал как высоту секции.
Моя ячейка имеет динамическую высоту и может изменять ее высоту, когда я нажимаю кнопку «еще», поэтому ячейка немного расширяется.
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if self.segmentedControl.selectedSegmentIndex == 0 {
if self.isCellSelectedAt[indexPath.section] {
return self.fullCellHeight
} else {
return self.shortCellHeight
}
} else {
return 148
}
}
И вот как я настраиваю свою ячейку:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = UITableViewCell()
if self.segmentedControl.selectedSegmentIndex == 0 {
cell = tableView.dequeueReusableCell(withIdentifier: String.className(CurrentDocCell.self)) as! CurrentDocCell
(cell as! CurrentDocCell).delegate = self
(cell as! CurrentDocCell).ID = indexPath.section
} else {
cell = tableView.dequeueReusableCell(withIdentifier: String.className(PromissoryDocCell.self)) as! PromissoryDocCell
}
return cell
}
Итак, у меня есть сегментированный элемент управления, переключая который, я могу представить либо одну ячейку определенной высоты, либо другую, котораяявляется расширяемым.
В моем viewDidLoad у меня есть только эти настройки для tableView:
self.tableView.registerCellNib(CurrentDocCell.self)
self.tableView.registerCellNib(PromissoryDocCell.self)
И для расширения ячейки у меня есть этот метод делегата:
func showDetails(at ID: Int) {
self.tableView.beginUpdates()
self.isCellSelectedAt[ID] = !self.isCellSelectedAt[ID]
self.tableView.endUpdates()
}
Iустановите точку останова в методе tableForRowAt tableView, и он действительно вызывается каждый раз, когда я прокручиваю свой tableView.Есть идеи?Я чувствую, что использование другого подхода к созданию интервала между ячейками может решить эту проблему.