Условно скрыть заголовок раздела сгруппированного табличного представления, при этом каждый раздел имеет заголовок

#ios #hide #uitableviewsectionheader

Вопрос:

У меня есть условие, на основании которого мне нужно скрыть заголовок для моего статического табличного представления. Стиль моего tableview таков grouped , и у каждого раздела есть заголовок в заголовке раздела.

Я устанавливаю высоту 5-й секции на CGFloat.leastNormalMagnitude , потому что я хочу, чтобы она исчезла, но она не работает.

 override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -gt; CGFloat {  if hideFifthRow{  if section == 4 {  return CGFloat.leastNormalMagnitude  }  }  return tableView.sectionHeaderHeight }  

Может кто-нибудь, пожалуйста, помочь.

Ответ №1:

 override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -gt; CGFloat { if hideFifthRow{ if section == 4 { return 0.1 } } return tableView.sectionHeaderHeight }  

Комментарии:

1. нет, это не работает, потому что поле заголовка заголовка не пустое.

2. Хорошо. Я предположил, что заголовок заголовка равен нулю, поэтому вы пытаетесь скрыть заголовок для этого раздела.

Ответ №2:

Итак, я выяснил причину, по которой заголовок не может скрыться. Если в поле заголовка заголовка есть что-либо, то сделать высоту раздела минимально возможной, не получится.

Итак, поверх

 override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -gt; CGFloat {  if hideFifthRow{  if section == 4 {  return CGFloat.leastNormalMagnitude  }  }  return tableView.sectionHeaderHeight }  

Вот что мне нужно выполнить дополнительно-

 override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -gt; String? {  if hideFifthRow{  if section == 4 {  return nil  }  }  return sectionTitles[section] }  

Обратите внимание, что мне пришлось хранить заголовки заголовков в массиве и программно задавать заголовки из titleForHeaderInSection метода делегата. Для моего скрытого пункта мне пришлось вернуть ноль, чтобы сначала избавиться от названия.