我有一个UICollectionView
其所有单元格都包含一个UITableView
. 我的UICollectionView
委托/数据源方法由视图控制器(假设TTCollectionViewController
)处理,并由( )tableViews
直接处理。collection view cells
TTCollectionViewCell
为了更改一些标签颜色,我需要跟踪我的 tableViews 上的每个选定行,所以我做了类似的事情:
//
// TTCollectionViewCell.m
//
[...]
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// keep track of selected drugs
if (![self.selectedDrugIndexPaths containsObject:indexPath])
{
[self.selectedDrugIndexPaths addObject:indexPath];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TTTableViewCell *contentCell = [tableView dequeueReusableCellWithIdentifier:@"test"];
if (contentCell == nil)
contentCell = [[TTTableViewCell alloc] init];
[...]
// test
if ([self.selectedDrugIndexPaths containsObject:indexPath]) {
contentCell.drugLabel.textColor = [UIColor grayColor];
} else {
contentCell.drugLabel.textColor = [UIColor blackColor];
}
}
[...]
但事情是这样的:使用 dequeue 可重用的东西,我collectionView
搞砸了我的所有曲目(例如,在滚动时,表 1 上的选定行在表 3 上被选中)。
我知道不使用是个坏主意dequeuereusable
(我什至不知道是否可以不使用它),但是我可以做类似的事情吗?
有没有人已经实施过这种案例?
提前谢谢。
编辑 :
这cellForRow...
是您要求的我的collectionView的方法:
///
/// TTCollectionController.m
///
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
TTCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
cell.data = [self.data objectAtIndex:indexPath.row];
return cell;
}