Показать пустые UITableViewCells в пользовательском UITableView - PullRequest
12 голосов
/ 10 апреля 2010

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

альтернативный текст 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, поэтому тайл отключается после того, как фактические ячейки будут отображены:

альтернативный текст http://img707.imageshack.us/img707/8445/picture2jyo.png

Как настроить вид таблицы, но при этом оставить пустые строки, если строк меньше, чем заполнить страницу?

Ответы [ 2 ]

9 голосов
/ 10 апреля 2010

Вы случайно удалили цвет фона и стиль разделителя? Если вы сделали, это может быть, почему нет лишних клеток. Я думаю, что 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;
}
0 голосов
/ 10 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...