Подтвердить что ты не робот

Показать пустой UITableViewCells в пользовательском UITableView

Я пытаюсь настроить UITableView. Пока это выглядит хорошо. Но когда я использую собственный подкласс UITableViewCell, я не получаю пустые ячейки таблицы, когда есть только 3 ячейки:

alt text http://img193.imageshack.us/img193/2450/picture1zh.png

Используя стиль TableView по умолчанию, я могу получить повторяющиеся пустые строки, чтобы заполнить представление (например, это приложение электронной почты). Я попытался установить шаблон backgroundColor на UITableView на тот же фон плитки:

UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"score-cell-bg.png"]];
moneyTableView.backgroundColor = color;

... но плитка начинается немного до вершины TableView, поэтому плитка выключается после отображения фактической ячейки:

alt text http://img707.imageshack.us/img707/8445/picture2jyo.png

Как я могу настроить мой просмотр таблицы, но все равно сохраняю пустые строки, если меньше строк, чем заполнение страницы?

4b9b3361

Ответ 1

Вы случайно удалили цвет фона и стиль разделителя? Если бы вы это сделали, это может быть причиной отсутствия лишних ячеек. Я бы подумал, что UITableView по умолчанию не добавляет больше ячеек, он просто имеет стиль разделителя для создания этой иллюзии, и поскольку он имеет белый фон, они выглядят как ячейки.

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return ([source count] <= 7) ? 7 : [source count];
}

- (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];
    }

    // Set all labels to be blank
    if([source count] <= 7 && indexPath.row > [source count]) {
        cell.textLabel.text = @"";
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    } else {
        cell.textLabel.text = [source objectAtIndex:indexPath.row];
        cell.selectionStyle = UITableViewCellSelectionStyleBlue;
    }

  return cell;
}

Ответ 2

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

Кроме того, вы можете просто вернуть высоту ячейки, которая будет охватывать плитку в tableview:cellHeightForRow:. Это хорошо работает на ячейках по умолчанию.