Я заметил iOS, это очень важно при использовании UICollectionView
внутри UITableViewCell
. То, что я пытаюсь достичь, это иметь коллекцию изображений (UICollectionView
) внутри UITableViewCell
. Я пытаюсь имитировать Facebook поста стиля, я думаю, у них есть UITableView
, с помощью пользовательских ячеек и так далее, но вот проблемы ...UICollectionView внутри UITableViewCell
мне удалось поставить UICollectionView
внутри UITableViewCell
, и он работал правильно и отлично, без проблем, все отлично видно, оно доступно для кликов и так далее. НО, я пытался реорганизовать свой код, извлекая UICollectionViewDataSource
& UICollectionViewDelegate
в отдельные файлы для их повторного использования и имеющих меньше коды на Main View Controller
, именно здесь, когда мой кошмар начался, я не знаю, почему, если Я использую отдельные файлы. IOS Циклы конфигурации ячеек. Например:
-(void)configureCell:(UICollectionViewCell*)customCell atIndexPath:(NSIndexPath*)indexPath;
Вышеописанный способ его называют на две части процесса:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *identifier = [self retrieveIdentifierForIndexPath:indexPath];
UITableViewCell *myCell = [tableView dequeueReusableCellWithIdentifier:identifier];
[self configureCell:myCell atIndexPath:indexPath];
[cell setNeedsLayout];
[cell layoutIfNeeded];
[cell setNeedsUpdateConstraints];
[cell updateConstraintsIfNeeded];
CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingExpandedSize].height;
return height;
}
выше метод он вызывается для расчета высоты строки с помощью AutoLayout я прочитал это на сообщение здесь StackOverflow (не помню пост :()
После высоты он расчете и так далее, другой метод называет «configureCell
» метод:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *rowName = [self retrieveIdentifierForIndexPath:indexPath];
PostDetailTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:rowName forIndexPath:indexPath];
//PreCondition
if([rowName isEqualToString:@"LoadingRow"]){
return cell;
}
// Configure the cell...
[self configureCell:cell atIndexPath:indexPath withImages:YES];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
return cell;
}
При запуске отладчика, метод configureCell:atIndexPath:
его называют снова и снова и снова. это второй раз, когда это происходит. Означает ли это, что я не могу «отделить» DataSource
? Или НЕВОЗМОЖНО, чтобы добавить UICollectionView
внутри UITableViewCell
. Или я использую плохой подход? Есть ли способ сделать это?
Я очень смущен об этом ...
Спасибо, ребята!
Та же проблема, с которой я столкнулся. Пока не получил решения. –
Непросто пройти через всю конфигурацию ячейки, чтобы просто определить высоту строки. –
Не знаю, как рассчитать высоту:/все примеры, которые я видел, рекомендовали сделать это – NemesisDoom