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