如何在UITableViewCell中停止UICollectionView超出界限时启动多个UICollectionView?

时间:2012-12-19 13:19:31

标签: ios uitableview uicollectionview

我有UITableView扩展每个单元格的高度,并在选择单元格时显示UICollectionView。它完成上述所有操作时没有错误,但是,当我选择一个tableCell后,它们都被展开。 当UICollectionView用Cell填充并且每个都有不同数量的项目时(所以James有3个见解而Tim有4个),当我用较少的项目扩展TableViewCell然后尝试滚动Tim的{{ 1}},它超出界限。这是因为当我发起新的收藏视图时,他们都会看到最近创建的UICollectionView的{​​{1}}。我希望创建的视图能够维护最初创建时的numberOfItemsInSection:,而不是所有UICollectionView采用最新的numberOfItemsInSection:。我希望这是有道理的,但我会粘贴我的代码以更好地了解我的意思,下面是来自UITableViewController的代码:

UICollectionView

numberOfItemsInSection:是包含- (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]; 的{​​{1}}。我希望每个leaderCell的{​​{1}}应用于每个UITableViewCell而不是全部。有没有人遇到过类似的问题?提前致谢!

编辑我得出的结论是,我需要解决的问题是成功实现我想要的是将dataSource分配给正确的对象,但是,我不知道我需要分配什么它...我基本上需要dataSource来单独处理每个单元格。目前我的数据源设置为TableViewCell,它应该是正确的,因为它被分配给每个单独的单元格......

0 个答案:

没有答案