我有一个自定义UITabvleViewCell,里面有UIImageView。我可以在cellForRowAtIndexPath中设置单元格时将图像设置得很好(尽管我不这样做)但是在某些条件下我需要更改图像并且使用以下代码执行此操作。
-(void)updateCellForUPC
{
AppData* theData = [self theAppData];
NSInteger cellIndex;
for (cellIndex = 0; cellIndex < [productArray count]; cellIndex++) {
NSString *cellUPC = [NSString stringWithFormat:@"%@",[[productArray objectAtIndex:cellIndex] objectForKey:@"UPC"]];
if ([cellUPC isEqualToString:theData.UPC]) {
OrderDetailCell *activeCell = [[OrderDetailCell alloc] init];
activeCell = (OrderDetailCell *) [orderDetailTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:cellIndex inSection:0]];
UIImage* image = [UIImage imageNamed:@"checkmark.png"];
activeCell.statusImageView.image = image;
activeCell.checked = YES;
}
}
}
这样可以工作并且图像会更新,但是当您将单元格从屏幕滚动并返回到屏幕时,图像会重置!
我需要它坚持使用新图像。
答案 0 :(得分:1)
不建议这样做,因为您没有获得未使用单元格的出队机制的好处。在创建单元格时考虑这样做,或者创建一个机制来知道应该对哪些单元格进行操作。
答案 1 :(得分:0)
对于任何对我今后如何做到这一点感兴趣的人。
我制作了一个NSMutableArray并将索引添加为NSString ..如果当时正在显示该单元格,我还会为其设置图像。
-(void)updateCellForUPC
{
AppData* theData = [self theAppData];
NSInteger cellIndex;
for (cellIndex = 0; cellIndex < [productArray count]; cellIndex++) {
NSString *cellUPC = [NSString stringWithFormat:@"%@",[[productArray objectAtIndex:cellIndex] objectForKey:@"UPC"]];
if ([cellUPC isEqualToString:theData.UPC]) {
OrderDetailCell *activeCell = [[OrderDetailCell alloc] init];
activeCell = (OrderDetailCell *) [orderDetailTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:cellIndex inSection:0]];
UIImage* image = [UIImage imageNamed:@"checkmark.png"];
activeCell.statusImageView.image = image;
NSString *index = [NSString stringWithFormat:@"%d",cellIndex];
[selectionArray addObject:index];
}
}
}
然后在我的cellForRowAtIndexPath中,我只使用以下代码检查索引是否在数组中,如果是,则设置我的图像。这样,当重新绘制(滚动)单元格时,它具有图像。
NSString *index = [NSString stringWithFormat:@"%d",indexPath.row];
if ([selectionArray containsObject:index]) {
UIImage* image = [UIImage imageNamed:@"checkmark.png"];
cell.statusImageView.image = image;
}