it-roy-ru.com

iPhone UITableView: как убрать интервал между разделами в таблице стилей группы?

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

Вот методы источника данных: 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
   return 10;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  return 0;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UILabel * label = [[UILabel alloc] init];
    label.backgroundColor = [UIColor grayColor];
    return label;
}

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

Вот скриншот вывода: enter image description here

У меня есть немного сложная причина, почему я делаю это так, которую я не смогу объяснить через письмо. Все, что я хочу сделать, это не иметь пробелов в представлениях заголовка раздела. Заранее спасибо.

16
Bharat Jagtap

Попробуй это..

   self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload

 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}

Также есть разделитель таблиц как ни один.

47
RAJA

Если вы возвращаете 0 в tableView:heightForFooterInSection:, то возвращается значение по умолчанию (вероятно, 10.0). Это сложно, но вы можете использовать CGFLOAT_MIN вместо 0 для удаления нижнего колонтитула. 

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}

Обновление:

Swift 3 :

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}
19
MMiroslav

Попробуйте с помощью следующего кода

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 0.25; // as for you need
}

вы также можете управлять, следуя методу делегата 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

Короче говоря, вы можете управлять этим двумя способами.

3
iPatel

Вы можете сделать это непосредственно в интерфейсе, вы должны установить высоту нижнего колонтитула в 1 следующим образом:

 enter image description here

3
Ugo Marinelli

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

или же 

попробуйте простой стиль.

typedef enum {
   UITableViewStylePlain,
   UITableViewStyleGrouped
} UITableViewStyle;
2
lancy

Так что я не могу голосовать, но я могу опубликовать ответ

Правильный ответ на этот путь на самом деле

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
     return CGFLOAT_MIN;
}
1
Travis Delly

Измените стиль табличного представления с Сгруппированный на Простой. Это решило мою проблему.

0
user2179059

Вам нужно использовать метод heightForHeaderInSection. Вы также можете изменить его в зависимости от различных разделов, например. в некоторых разделах вам может понадобиться показать большее расстояние, а в некоторых разделах вы не хотите показывать разрыв. Для такого случая вы можете использовать CGFLOAT_MIN, который равен 0,000001f. Приведу пример того, как вы можете использовать разные разделы с разной высотой заголовка.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0 || section == 2)
    {
        return 55.0;
    }
    else
    {
        return CGFLOAT_MIN;
    }
}

Надеюсь, это поможет вам.

0
Aks