zoukankan      html  css  js  c++  java
  • tableView的单选问题

    在我们开发的过程中,很多时候用到tableview的单选问题,具体就是我们点击某个cell后面显示对号,再次点击对号消失.如果我们只是单纯的添加对号,就会导致cell从复用池里面取的时候,后面的对号也会自动的添加上,这就与我们的初衷相违背,那么我们要怎么做呢;下面我就来介绍一种简单的单选问题的解决方案

    原理:

    首先建一个可变数组,数组里面存储的数据是用来标记cell的选择状态,0代表没有被选择,1代表被选择

    数组的数据的个数和cell上添加的数据的个数保持一致

    值得注意的是:

    1:点击的时候,先判断对应的存放标识的数组,如果是0说明我们点击的是一个新的cell,此时我们就要将数组里面所有的数换成0然后执行点击某个将某个替换成1的操作

    2:当点击的是1的时候就不需要,直接将1替换成0就可以了

    3:选择完成之后我们需要刷新一些tableview就可以了

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        
        UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
        if ([tagArray[indexPath.row] isEqualToString:@"0"]) {
            
            NSInteger number = tagArray.count;
            [tagArray removeAllObjects];
            for (int i = 0; i < number; i++) {
                [tagArray addObject:@"0"];
            }
            
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            [tagArray replaceObjectAtIndex:indexPath.row withObject:@"1"];
            
            [tableView reloadData];
        } else if ([tagArray[indexPath.row] isEqualToString:@"1"]) {
            
            [tagArray replaceObjectAtIndex:indexPath.row withObject:@"0"];
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
        
    }

    然后 在cell的创建里面,我们需要对对应的标识数组进行判断,然后我们判断其是否被选择

     if ([tagArray[indexPath.row] isEqualToString:@"0"]) {
            cell.accessoryType = UITableViewCellAccessoryNone;
        } else {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }

    这样我们就完成了简单的单选

    解决这类问题还有其他的方法,比如我们在对cell进行赋值的时候.我们用的是model.那么此时我们就可以在model里面添加一条新的属性,这个属性专门是用来标记cell的选择状态

  • 相关阅读:
    通信—互联网协议入门2(转载)
    通信—互联网协议入门1(转载)
    通信—HTTP 协议入门(转载)
    通信—跨域资源共享
    ionic3使用echart插件
    通信—HTTP与HTTPS
    ionic学习笔记—常用命令
    ionic学习笔记—创建项目
    Spark 资源池简介
    数据库设计原则
  • 原文地址:https://www.cnblogs.com/nsjelly/p/4512251.html
Copyright © 2011-2022 走看看