Для случая статической таблицы, то есть разделы и ячейки таблицы настраиваются в раскадровке. Ниже приведены мои стратегии скрытия указанного раздела в зависимости от условий.
Шаг первый : реализовать два func
, определенный в UITableViewDelegate
- heightForRowAt
- heightForHeaderInSection
Например, вот быстрые коды:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
// if indexPath contains the specified section AND
// the condition for hiding this section is `true`
// return CGFloat(0)
// else
// return super.tableView(tableView, heightForRowAt: indexPath)
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{
// similar logic to set header height
}
Шаг второй : определить функцию для установки ячеек, скрытых для определенного раздела, и вызвать ее из viewWillAppear:
private func setSectionVisible()
{
/*
if condition for visible is true
let index = IndexPath(row:..., section:...)
let cell = self.tableView.cellForRow(at: index)
cell.isHiden = true
*/
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.setSectionVisible()
}
В случае, если вам нужно перезагрузить просмотр таблицы, вам может потребоваться снова вызвать setSectionVisible()
.
Я думаю, что эта стратегия может работать для динамических данных из источника данных. Таким образом, вы можете контролировать, когда делать определенный раздел видимым или скрытым.