iOS:如何在这种方法中为我的每个单元格分配一个标签?
Posted
技术标签:
【中文标题】iOS:如何在这种方法中为我的每个单元格分配一个标签?【英文标题】:iOS: how can I assign each of my cells a tag in this method? 【发布时间】:2014-03-05 16:02:42 【问题描述】:我需要用标签 id 更新每个单元格。我已经完成了这个,但是有一个关键的缺陷。当我更改单元格的顺序时,单元格将继承错误的 id。例如,如果我将单元格 2 替换为单元格 1,则单元格 1 将获得单元格 2 的 ID,而单元格 2 将获得单元格 1 的 ID。每个 ID 都需要用于一个特定的单元格和一个单元格,这样如果我更改了单元格的顺序,它将包含其 ID。我相信问题是我在我的 UICollectionView 委托中调用 id ,因此每次它更新它从服务器调用并再次重用 id 时。我怎样才能解决这个问题?
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
[self.collectionView registerClass:[Cell class] forCellWithReuseIdentifier:@"Cell"];
Cell *cell = (Cell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
if (self.data == nil || [self.data count] == 0)
self.data = [sections objectAtIndex:indexPath.section];
cell.cellImg.image = nil;
[tagArray removeAllObjects];
else
self.data = [sections objectAtIndex:indexPath.section];
cell.cellImg.image = [self.data objectAtIndex:indexPath.item];
self.largeImage.image = [self.data objectAtIndex:0];
NSDictionary *url = [self.result objectAtIndex:indexPath.row];
NSString *string = [url valueForKey:@"id"];
cell.cellImg.tag = string.intValue;
[tagArray addObject:[NSNumber numberWithInt:cell.cellImg.tag]];
return cell;
-(void)didGetResults:(NSArray *)resultArray
self.resultArray = resultArray;
resultModel = [self.resultArray objectAtIndex:0];
self.resultdata = resultModel.resultdata;
sections = [[NSMutableArray alloc] initWithCapacity:SECTION_COUNT];
for(int s = 0; s < SECTION_COUNT; s++)
self.data = [[NSMutableArray alloc] initWithCapacity:self.resultdata.count];
for(int i = 0; i < self.result.count; i++)
NSDictionary *url = [self.result objectAtIndex:i];
NSString *string = [url valueForKey:@"web_path"];
UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:string]]]];
[self.data addObject:myImageView.image];
[sections addObject:self.data];
[tagArray removeAllObjects];
[self.collectionView reloadData];
【问题讨论】:
【参考方案1】:您可以先读取单元格 id,然后查看该标签 id 是否与列表中的 id 匹配。如果没有,请为其分配一个 id(假设首先加载该特定单元格或一般的整个表格视图)。如果是,请不要分配新值。我知道如果您的可分配 id 值在表格视图的范围内,这种方法不是特别安全。在这种情况下,请使用散列或大编号的 id,或者是填充整数的串联,例如 id[1] = 1001
和 id[2] = 1002
。
【讨论】:
以上是关于iOS:如何在这种方法中为我的每个单元格分配一个标签?的主要内容,如果未能解决你的问题,请参考以下文章
在电子表格的相邻单元格中为 Google 表单的每个答案添加时间戳
如何在 Collection 视图中为每个单元格添加 edgeInsets -Swift