Я изучаю UICollectionView
и применяю его в своем приложении ios.Тем не менее, у меня возникла проблема, что я не могу перезагрузить данные UICollectionView
.
PS данные уже были успешно сохранены в массиве с именем queriedGroups
.У меня есть только два раздела в UITableView
.
TableViewCell:
Я определил UICollectionview
в UITableViewCell
и метод, который настроил delegate
и datasource
для UICollectionView
.Вот метод:
- (void)setCollectionViewDataSourceDelegate:(id<UICollectionViewDataSource, UICollectionViewDelegate>)dataSourceDelegate indexPath:(NSIndexPath *)indexPath
{
self.collectionView.dataSource = dataSourceDelegate;
self.collectionView.delegate = dataSourceDelegate;
self.collectionView.indexPath = indexPath;
[self.collectionView reloadData];
}
TableViewController:
В UITableView
у меня есть два различных типа TableViewCell
: 1) тот, который содержитUICollectionView
;2) типичный UITableViewCell
.
Вот как я настроил эти два TableViewCell
в cellForRowAtIndexPath:
:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 0) {
static NSString *CellIdentifier = @"CellIdentifier";
GroupCategoryViewCell *cell = (GroupCategoryViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell)
{
cell = [[GroupCategoryViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
return cell;
} else {
static NSString *GroupCellIdentifier = @"GroupListViewCell";
if (indexPath.row < queriedGroups.count) {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:GroupCellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:GroupCellIdentifier];
}
cell.textLabel.text = queriedGroups[indexPath.row];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
}
return nil;
}
А вот willDisplayCell:
:
-(void)tableView:(UITableView *)tableView willDisplayCell:(GroupCategoryViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
[cell setCollectionViewDataSourceDelegate:self indexPath:indexPath];
}
}
Проблема:
Я успешно применил UICollectionView
в UITableView
только с одним типом UITableViewCell
на другом контроллере.В этом контроллере метод willDisplayCell:
может успешно настроить delegate
и datasource
для UICollectionView
.
Однако, очевидно, он не может работать для контроллера, который имеет два различных типа UITableViewCell
водин UITableView
.
Как мне настроить delegate
и datasource
для UICollectionView
и перезагрузить данные в этой ситуации?
Большое спасибо за помощь в решениимоя проблема.Я ценю всю вашу помощь!