2

我有一个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];

leaderCellUITableViewCell包含UICollectionView. 我希望将每个UICollectionView'snumberOfItemsInSection:应用于每个而不是全部。有没有人遇到过类似的问题?提前致谢!

编辑我得出的结论是,为了成功实现我想要的,我需要解决的是将数据源分配给正确的对象,但是,我不确定我需要将它分配给什么......我基本上需要数据源分别寻址每个单元格。目前我的数据源设置为 TableViewCell 这应该是正确的,因为它分配给每个单独的单元格......

4

0 回答 0