Я пытаюсь скрыть или показать ячейки tableviewcontroller, используя сегментированный элемент управления и переключатель.Код ниже не работает, и он будет печататься, только если я коснусь внутри ячейки.Я полагаю, что прикосновение приводит к перезагрузке таблицы.
Код:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
switch(profileSegment.selectedSegmentIndex) {
case 0:
print("Seg Change")
if cell == self.reviewsCell {
return 0
}
tableView.reload()
break
case 1:
print("Seg Change")
if cell == self.watchCell {
return 0
}
if cell == self.watchedCell {
return 0
}
if cell == self.reviewsCell {
return 500
}
tableView.reload()
break
default:
break
}
return super.tableView(tableView, heightForRowAt: indexPath)
}
Почему просмотр таблицы не перезагружается при переключении?Есть ли более эффективный способ добиться этого, кроме изменения размера на 0?
ОБНОВЛЕНИЕ:
Я попробовал другой маршрут и добился частичного успеха.Переключатель работает, но только делает ячейки пустыми.Что заставило бы ячейки полностью исчезнуть?
CODE:
func segChange(sender: UISegmentedControl) {
switch(profileSegment.selectedSegmentIndex) {
case 0:
self.reviewCell.isHidden = true
self.cell.isHidden = false
tableView.reloadData()
break
case 1:
self.reviewCell.isHidden = false
self.cell.isHidden = true
tableView.reloadData()
break
default:
break
}
}
ОБНОВЛЕНИЕ 2: Если я использую код ниже tableView, я изменю ячейки в первый раз, когда я выбираю новый индекс сегмента, ноуправление сегментом не меняется и перестает отвечать на запросы.Почему сегмент реагирует именно так?Если я исправлю это, вопрос будет решен.
@objc func segChange() {
tableView.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
profileSegment.addTarget(self, action: #selector(segChange), for: .valueChanged)
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
switch(profileSegment.selectedSegmentIndex) {
case 0:
if cell == self.reviewsCell {
return 0
}
break
case 1:
if cell == self.watchCell {
return 0
}
if cell == self.watchedCell {
return 0
}
if cell == self.reviewsCell {
return 500
}
break
default:
break
}
return super.tableView(tableView, heightForRowAt: indexPath)
}