- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil)
cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
Movie *movie = [self.movies objectAtIndex:indexPath.row];
cell.title.text = movie.title;
cell.subtitle.text = movie.subtitle;
cell.subtitle.numberOfLines = 0;
[cell.subtitle sizeToFit];
return cell;
}
Я звоню reloadData
из двух мест. Один из них - с конца функции loadInitialData
, которая вызывается от viewDidLoad
.self.tableView reloadData не работает, чтобы вертикально центрировать мой текст ярлыка
Второе вызывается от viewDidAppear
, хотя это несущественно для моей проблемы, потому что оно существовало до него и существует без него.
Первоначально загружаю 3 строки выборочных данных с заголовками и субтитрами. Теперь, что происходит, мой текст субтитров вертикально центрируется, когда это окно запускается первым. Если я хватаю за стол и прокручиваю высоко, внезапно мой [cell.subtitle sizeToFit]
вступает в действие, и мой текст идет вверх по вертикали, что и нужно.
Итак, моя проблема ... почему текст вертикально центрирован с самого начала? reloadData
тоже не работает. Когда я вернусь из добавления новой строки, все строки, кроме недавно добавленной строки, будут выровнены по вертикали вверху, как следует. Новая строка имеет неправильную вертикальную ориентацию.
Почему это не работает? Все кажется хорошим. Новые данные добавляются и т. Д. Через операторы NSLog
, я подтвердил, что numberOfRowsInSection
сразу же вызывается после вызова reloadData
.
Так почему же выравнивание текста по вертикали вверх не работает?
Спасибо!
Спасибо Стивен. Я должен был упомянуть, что я тоже это пробовал, и это тоже не решило мою проблему. На самом деле я очень взволнован. –
Посмотрите на фрейм ячейки и contentView, чтобы убедиться, что они имеют правильный размер в начальном вызове cellForRowAtIndexPath. –