各セルの高さをUITableView
拡大しUICollectionView
、セルが選択されたときに を表示する があります。上記のすべてをエラーなしで実行しますが、tableCell を次々に選択し、両方を展開すると、エラーが発生します。にUICollectionView
セルが入力され、それぞれに異なる量のアイテムがある場合 (つまり、James には 3 つの洞察があり、Tim には 4 つの洞察があります)、より少ないアイテムで TableViewCell を展開し、Tim の をスクロールしようとするとUICollectionView
、境界を超えます。これは、新しいコレクション ビューを開始すると、両方とも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
それぞれのnumberOfItemsInSection:
をすべてではなくそれぞれに適用したい。誰かが同様の問題に遭遇しましたか? 前もって感謝します!
編集ここで必要なことを成功させるために対処する必要があるのは、dataSourceを正しいオブジェクトに割り当てることですが、何に割り当てる必要があるのか わかりません...基本的にdataSourceが必要です各セルに個別に対処します。現時点では、データソースは TableViewCell に設定されていますが、これは個々のセルに割り当てられているため正しいはずです...