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_normalpictogram_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)

使附件类型成为选定单元格的复选标记

具有两个不同 tableview 单元格的两个 tableview

Qt C++ 从 QTableView 中获取选定行的每个单元格的数据

如何以编程方式将不同单元格的不同图像添加到 tableView (Swift)