Как скрыть раздел в UITableView? - PullRequest
26 голосов
/ 30 июня 2009

В таблице есть раздел, который не содержит никаких данных и хотел бы скрыть этот раздел.

Как это сделать?

Ответы [ 12 ]

0 голосов
/ 27 ноября 2016

Для случая статической таблицы, то есть разделы и ячейки таблицы настраиваются в раскадровке. Ниже приведены мои стратегии скрытия указанного раздела в зависимости от условий.

Шаг первый : реализовать два 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().

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

0 голосов
/ 05 апреля 2015

Попробуй так: -

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    CGFloat headerHeight=10.f;
    if (section==0)
    {
        headerHeight=0.01f;
    }
    else
    {
        headerHeight=50.0f;
    }
    return headerHeight;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...