Сгруппированный UITableView показывает пробел, когда раздел пуст

У меня есть сгруппированный UITableView, где не все разделы могут быть отображены сразу, таблица управляется некоторыми данными, которые не может иметь каждая запись. Моя проблема состоит в том, что записи, которые не имеют определенных разделов, обнаруживаются как пробелы в таблице (см. изображение),

сопроводительный текст http://img220.imageshack.us/img220/5633/screenshot20100322at228.png

Нет никаких нижних колонтитулов/заголовков. Что-нибудь я отсутствовал?

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [self getRowCount:section];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

cell.textLabel.text = [NSString stringWithFormat:@"section: %d row: %d",indexPath.section,indexPath.row];
// Configure the cell...

return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    float height = 0.0;

    if([self getRowCount:indexPath.section] != 0){
        height = kDefaultRowHeight;
    }

    return height;

}

24
задан christo16 22 March 2010 в 21:34
поделиться

2 ответа

На скриншоте выше ваш метод numberOfSectionsInTableView: возвращает значение 5? А затем ваш метод getRowCount: (вызываемый из numberOfRowsInSection:) возвращает значение 0 для тех "недостающих" секций (например, 1, 3 и 4)?

Если вам не нужны промежутки между ними, то вероятным решением будет объявить только то количество секций, которое вы хотите видеть. В вашем примере выше вы хотите вернуть только значение 3 из numberOfSectionsInTableView:.

6
ответ дан 28 November 2019 в 22:27
поделиться

Я считаю, что с представлениями таблиц разделов каждый раздел должен существовать, и каждый раздел имеет буферное пространство для заголовка и нижний колонтитул, независимо от того, вставляете ли вы в них текст. Что вам нужно сделать, так это удалить неиспользуемые разделы. В вашем примере вы должны удалить разделы 1, 3 и 4. Это будет означать:

«раздел 0» равен indexPath.section == 0

«раздел 2» равен indexPath.section == 1

"section 5" - indexPath.section == 2

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

Это, конечно, неправильное кодирование, но я просто хотел дать вам представление о богословии. Надеюсь, это поможет.

0
ответ дан 28 November 2019 в 22:27
поделиться