Программно удалите заголовок UITableView и автоматически измените размер содержимого, чтобы заполнить удаленную область

Я добавил UIButton в раздел заголовка UITableView через конструктор интерфейса и хотел бы удалить доступ к кнопке в определенных случаях. Я попытался использовать свойство .hidden = TRUE, но он просто скрывает кнопку из представления, оставляя пробел позади. Как программно удалить заголовок UITableView и автоматически изменить размер содержимого таблицы, чтобы заполнить удаленную область заголовка?

Ответы

Ответ 1

Если вы хотите удалить представление заголовка таблицы, просто установите для свойства myTable.tableHeaderView значение nil. Если то, что у вас есть на самом деле является заголовком раздела, вам нужно вернуть nil из метода viewForHeaderInSection и вызвать [myTableView reloadData]

Ответ 2

Вы также можете сделать:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 0.0;
}

Это, похоже, работает для моего (одного) заголовка раздела и позволяет избежать необходимости reloadData.

Обратите внимание, что:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

все еще вызывается, но его возвращаемое значение, похоже, игнорируется.

Ответ 3

Я создал логическое свойство под названием removeHeader, а затем, когда я хочу удалить свой заголовок, я вызываю:

func removeSectionHeader() {
        removeHeader = true
        self.tableView.reloadData()
    }

Затем, когда моя таблицаView перезагрузится, он вызовет этот метод делегата tableView:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if removeHeader {
            return 0.0
        } else {
            let height = self.tableView.sectionHeaderHeight
            return height
        }
    }