我正在开发一个位置感知应用程序作为大学的项目,其中一个开发功能包括显示最接近用户的前五个兴趣点。我正在使用一个表格视图,其单元格样式是UITableViewCellStyleSubtitle。我遇到了一些问题,因为除了单元格的标题和副标题之外,我正在使用图像(箭头)来显示用户应该遵循的方向来达到POI。一旦设备的标题/位置改变,该图像应该旋转。问题是只有表格视图的最后一行有效,主要问题是我不知道如何使用五个不同的单元格,因为每个POI可以有不同的位置而不是设备的位置,因此每个单元格的图像应该独立旋转。 我报告一张图片,以便更好地了解我的问题。
下面是我用于tableview单元格的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *tableIdentifier = @"tableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:tableIdentifier] autorelease];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
NSUInteger row = [indexPath row];
cell.detailTextLabel.text = [NSString stringWithFormat:@"Distance: %.3f Km",[...];
UIImage *cellImage = [UIImage imageNamed:@"arrow.png"];
cell.imageView.image = cellImage;
self.cellImageView = cell.imageView;
return cell;
}
如何使用5个不同的细胞来为每个箭头提供直角的任何想法?!
由于
答案 0 :(得分:2)
通过做:
self.cellImageView = cell.imageView
。
您只给出了最后一个细胞的参考。每次配置单元格时,cellImageView
变量都会更新为指向该单元格的图像视图,并且您将丢失对前一个单元格图像视图的引用。
因此,解决问题的一种方法是在单元格中累积单元格图像视图。只需确保将图像视图与适当的位置匹配;当tableview显示时,可以重复使用单元格。但是tableview拥有这些单元格并且可能会混淆它们,但是它需要用于缓存目的(因此重用标识符)。
更好的方法是与tableview合作,让它知道什么时候需要改变。忘记你的ivar,只需在单元配置期间设置正确的标题。需要更改单元格的标题?告诉tableview重新加载该单元格。需要更改所有细胞的标题?只需致电[[self tableView] reloadData]
。
只有当您遇到明显的UI减速问题时,您才会担心做一些更聪明的事情。