#iphone #objective-c #ios #uitableview
#iPhone #objective-c #iOS #uitableview
Вопрос:
Я работаю над приложением, которое загружает сообщения пользователя на facebook. Вся эта информация помещается в tableview. Ячейки можно использовать, когда вы нажимаете на них. На данный момент в нем есть только текст. Я вычисляю высоту текста, чтобы знать, какой высоты должна быть ячейка при расширении.
Проблема, с которой я сталкиваюсь, заключается в том, что в ней должно быть больше, чем просто текст. Если пользователь публикует видео на facebook, видео также будет встроено в ячейку. Но поскольку высота рассчитывается на основе текста, это не оставляет места для встроенного видео. Я могу добавить поле в ячейку, но тогда это поле будет применено ко всей ячейке.
Это код, который я использую прямо сейчас:
//Function executes everything within when a certain row in tapped/selected
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.tableView reloadData];
[self stopLoading];
if (selectedIndexPath == indexPath)
{
selectedIndexPath = nil;
}
else
{
selectedIndexPath = indexPath;
}
[self.tableView deselectRowAtIndexPath : indexPath animated : YES];
[tableView beginUpdates];
[tableView endUpdates];
}
//Change heigth of the selected row
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ((selectedIndexPath != nil) amp;amp; (selectedIndexPath.row == indexPath.row))
{
labelSize = [[result2 objectAtIndex:indexPath.row] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:13.0]
constrainedToSize:CGSizeMake(220.0f, MAXFLOAT)
lineBreakMode:UILineBreakModeWordWrap];
return labelSize.height 136;
}
return 68.0;
}
Итак, что мне нужно знать. Как я могу рассчитать высоту ячейки на основе всего содержимого? и не только текст.
Было бы здорово, если бы кто-нибудь мог помочь с этим!
Заранее спасибо
Комментарии:
1. На самом деле.. это было довольно просто. Просто нужно было добавить следующее в heightForRowAtIndexPath NSString *video = [fbSource objectAtIndex:indexPath.row] ; if (video != @»empty») { return labelSize.height 136; } return labelSize.height 36;
2. Вы должны опубликовать это как ответ, а затем принять его, чтобы этот вопрос больше не отображался как неотвеченный.
3. да, это было еще невозможно. Мне нужно было подождать 8 часов, но я сделал это сейчас!
Ответ №1:
На самом деле.. это было довольно просто. Просто нужно было добавить следующее в heightForRowAtIndexPath
NSString *video = [fbSource objectAtIndex:indexPath.row] ;
if (video != @"empty") { return labelSize.height 136; }
return labelSize.height 36;