Я работаю над приложением, где у меня есть пользовательский подкласс UITableViewCell. Я хочу, чтобы высота ячейки была динамичной на основе текста внутри нее. Я пытаюсь сделать это в моем методе heightForRowAtIndexPath. Но у меня есть некоторые проблемы, следующие причины кода и ошибка EXC_BAD_ACCESS (code = 2 address = 0xb7ffffcc).
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
PostCell *cell = (PostCell *)[tableView cellForRowAtIndexPath:indexPath];
CGSize postTextSize;
if (![cell.postText.text isEqualToString:@""]) {
postTextSize = [cell.postText.text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(cell.postText.frame.size.width, 200)];
} else {
postTextSize = CGSizeMake(cell.postText.frame.size.width, 40);
}
return postTextSize.height + cell.userName.frame.size.height + 10;
}
Если я вместо этого:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 100;
}
Это работает.
Кажется, он сбой в этой строке: PostCell *cell = (PostCell *)[tableView cellForRowAtIndexPath:indexPath];
, и я не знаю, почему. Я попытался создать чистый и reset симулятор, но не работал. Есть идеи, почему это происходит?