我正在尝试将所有cell.img.tag添加到我的nsmutable数组中。但是,我尝试了多种方法来执行此操作,例如for循环,但结果每次都不正确。我需要将每个单独的标签添加到NSMutableArray中。我将在下面发布我的代码给你一个想法。注意:这只是为了展示我正在做的事情,这不是我试图用来实现这项工作的方法。
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
Cell *cell = (Cell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
NSString *string = [addressString valueForKey:@"number"];
array = [[NSMutableArray alloc]init];
cell.img.tag = string.intValue;
[array addObject:[NSNumber numberWithInt:cell.img.tag]];
return cell;
}
编辑:当我使用for循环时,它将显示所有标签,但最终创建了多个阵列,每个阵列中的相同值重复多次,如此。 (1,1,1)(2,2,2)。
答案 0 :(得分:1)
这一行是问题所在:
array = [[NSMutableArray alloc]init];
每次调用cellForItemAtIndexPath
函数时,你基本上都在破坏数组并创建一个新的空数。
将该行移到代码中的其他位置(例如,在init
方法中)。
答案 1 :(得分:0)
代码有两个问题。第一个是每次数据源获取一个单元格时的数组分配。我怀疑这不是你的实现,因为你说“这不是我试图用来使这个工作的方法。”
另一个问题,你一遍又一遍地看到同一个对象的原因是你获取NSString *string = [addressString valueForKey:@"number"];
的模型部分对于传递给数据源的indexPath是不变的。
你有一系列地址吗?这会更有意义:
NSString *addressString = self.myArrayOfAddressesWichIsMyModel[indexPath.row];
NSString *string = [addressString valueForKey:@"number"];
现在字符串每次都会改变。重新检查数据源方法collectionView:numberOfItemsInSection:
您可能正在回答一些数组的计数。这是您的cellForItem方法中必须由indexPath.row取消引用的数组。