我有一个UITableView
扩展每个单元格的高度并UICollectionView
在选择单元格时显示一个。但是,当我一个接一个地选择一个 tableCell 并且它们都被扩展时,它可以毫无错误地完成上述所有操作。当UICollectionView
's 填充有 Cells 并且每个都有不同数量的项目(因此 James 有 3 个见解而 Tim 有 4 个)时,当我用更少的项目扩展 TableViewCell 然后尝试滚动 Tim'sUICollectionView
时,它超出了界限。这是因为当我启动一个新的集合视图时,它们都采用了numberOfItemsInSection:
最近创建的UICollectionView
. 我希望创建的视图能够保持numberOfItemsInSection:
它最初创建时的状态,而不是所有的都UICollectionView
采用最新的numberOfItemsInSection:
. 我希望这是有道理的,但我会粘贴我的代码以便更好地理解我的意思,下面是来自 UITableViewController 的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
leaderboardCell *leaderCell = (leaderboardCell *) [self.tableView cellForRowAtIndexPath:indexPath];
isSelected = ![self cellIsSelected:indexPath];
if ([self cellIsSelected:indexPath]) {
[leaderCell.collectionView removeFromSuperview];
leaderCell.collectionView = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"PostCellInformation" object:nil];
} else {
if (isSelected) {
leaderCell.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(320, 65, 322, 200) collectionViewLayout:leaderCell.flowLayout];
[leaderCell.collectionView registerClass:[userCell class] forCellWithReuseIdentifier:@"userCellID"];
leaderCell.flowLayout = [[UICollectionViewFlowLayout alloc] init];
[leaderCell.flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
UIColor *collectionViewColour = [UIColor colorWithRed:0.17 green:0.28 blue:0.40 alpha:1.0];
UIColor *borderColour = [UIColor colorWithRed:0.37 green:0.48 blue:0.60 alpha:1.0];
[leaderCell.collectionView setBackgroundColor:collectionViewColour];
[leaderCell.collectionView.layer setBorderColor:[borderColour CGColor]];
[leaderCell.collectionView.layer setBorderWidth:1.0];
[leaderCell.collectionView setDataSource:leaderCell];
[leaderCell.collectionView setDelegate:leaderCell];
}
}
// Store cell 'selected' state keyed on indexPath
NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected];
[selectedIndexes setObject:selectedIndex forKey:indexPath];
[self.tableView beginUpdates];
[self.tableView endUpdates];
leaderCell
是UITableViewCell
包含UICollectionView
. 我希望将每个UICollectionView
'snumberOfItemsInSection:
应用于每个而不是全部。有没有人遇到过类似的问题?提前致谢!
编辑我得出的结论是,为了成功实现我想要的,我需要解决的是将数据源分配给正确的对象,但是,我不确定我需要将它分配给什么......我基本上需要数据源分别寻址每个单元格。目前我的数据源设置为 TableViewCell 这应该是正确的,因为它分配给每个单独的单元格......