tableView 单元格的正常和选定状态的不同象形图
Posted
技术标签:
【中文标题】tableView 单元格的正常和选定状态的不同象形图【英文标题】:Different pictograms for normal and selected state of tableView cells 【发布时间】:2012-10-07 14:23:37 【问题描述】:这是我的设置。带有自定义设计单元格的表格视图,可重复使用多次。布局是四个UILabel和一个UIImageView。
我在tableView:cellForRowAtIndexPath:
中加载单元格,并在其中找到它是哪个单元格(数据项)后,我用数据源中的适当文本填充标签。
我还有 7 个象形图。每个单元格都会根据单元格的内容(项目类型)获得其中一个象形图。问题是,每个象形图都存在于其正常版本和“选定”版本中。这意味着当单元格被选中时,设计团队为我提供了颜色略有不同的修改版象形图。
因此,对于每个单元格,我需要将 pictogram_normal
和 pictogram_selected
加载到同一个单元格中,以便在选择单元格时显示所选的单元格。
我应该如何设置?
【问题讨论】:
【参考方案1】:当一个单元格被选中时,改变这个单元格的背景图片视图,然后使其他单元格的背景图片视图正常。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell* cell=[tableView cellForRowAtIndexPath:indexPath];
cell.backgroundView=[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pictogram_selected.png"]] autorelease];
cell.selected=YES;
selectedIndex=indexPath.row;
for(UITableViewCell* theCell in [tableView visibleCells])
if(![theCell isEqual:cell])
theCell.accessoryType=UITableViewCellAccessoryNone;
theCell.selected=NO;
[theCell.backgroundView removeFromSuperview];
selectedIndex
是保存tableview的selectedindex的数字。如果你想在tableview中保存选中的状态,使用selectedIndex来选中cell。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
ITableViewCell* cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
//your code here
if(indexPath.row == selectedIndex)
cell.backgroundView=[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pictogram_selected.png"]] autorelease];
cell.selected=YES;
//your code here
return cell;
【讨论】:
对不起,为每个单元格分配一个新的 UIimageView 对象有点太贵了:-/以上是关于tableView 单元格的正常和选定状态的不同象形图的主要内容,如果未能解决你的问题,请参考以下文章
具有两个不同 tableview 单元格的两个 tableview