开发者

Reset UItableViewCell checkmarks

开发者 https://www.devze.com 2023-03-30 14:23 出处:网络
following code starts with a blank cells and add a checkmark when selected cell but, once added, if you press again that cell, it is not erased. I am trying t开发者_如何学运维o reset it each time that

following code starts with a blank cells and add a checkmark when selected cell but, once added, if you press again that cell, it is not erased. I am trying t开发者_如何学运维o reset it each time that didSelectRowAtIndexPath is called. How to clear cell in order to be marked only one? Thanks.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        cell.accessoryType = UITableViewCellAccessoryNone;

    if (indexPath.section == 0) {

    switch (indexPath.row) {
        case 0:
            labelInfo.text=@"1";
            cell.accessoryType = UITableViewCellAccessoryCheckmark; 
            break;
        case 1:
            labelInfo.text=@"2";
            cell.accessoryType = UITableViewCellAccessoryCheckmark; 
            break;
        case 2:
            labelInfo.text=@"3";
            cell.accessoryType = UITableViewCellAccessoryCheckmark; 
            break;
        case 3:
            labelInfo.text=@"4";
            cell.accessoryType = UITableViewCellAccessoryCheckmark; 
            break;
        case 4:
            labelInfo.text=@"5";
            cell.accessoryType = UITableViewCellAccessoryCheckmark; 
            break;
        default:
            break;
        }
    }
}        


This code will remove all checkmarks on the table

[[self.tableView visibleCells] makeObjectsPerformSelector:@selector(setAccessoryType:) withObject:UITableViewCellAccessoryNone];


Just copy-paste this. It works.

  //in your .h file
   int selectedCell;

   //in your .m file
   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
   {

       NSString* cellIdentifier = @"cellIdentifier";
       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

       if(cell == nil)
       {
           cell = (UITableViewCell*) [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

       }
       cell.accessoryType = UITableViewCellAccessoryNone;

       if (indexPath.section == 0) {

           if(indexPath.row == selectedCell)
           {
                   cell.accessoryType = UITableViewCellAccessoryCheckmark; 
                   cell.selected = YES;
           }
           else
           {
               cell.accessoryType = UITableViewCellAccessoryNone;
               cell.selected = NO;
           }
       }
   }



   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
   {
       selectedCell = indexPath.row;
       [tableView reloadData];
       //remaining code.
   }


Try this:

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
    cell.accessoryType = UITableViewCellAccessoryNone;
} else {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}


In your code you start with

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryNone;

Which remove check mark from selected cell, but later you assign checkmark again with

switch (indexPath.row) {
    case 0:
        labelInfo.text=@"1";
        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break;
    case 1:
        labelInfo.text=@"2";
        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break;
    case 2:
        labelInfo.text=@"3";
        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break;
    case 3:
        labelInfo.text=@"4";
        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break;
    case 4:
        labelInfo.text=@"5";
        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break;
    default:
        break;
    }

So, you can use something like

 if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
    cell.accessoryType = UITableViewCellAccessoryNone;
} else {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

for toggle the checkmark and

labelInfo.text = [NSString stringWithFormat:@"%d", indexPath.row + 1];

for label


do this:-

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {

        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];


        if (indexPath.section == 0) {

            switch (indexPath.row) {
                case 0:
                    labelInfo.text=@"1";
                    if (cell.accessoryType==UITableViewCellAccessoryCheckmark) 
                        cell.accessoryType=UITableViewCellAccessoryNone;
                    else 
                        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
                    break;
                case 1:
                    labelInfo.text=@"2";
if (cell.accessoryType==UITableViewCellAccessoryCheckmark) 
                        cell.accessoryType=UITableViewCellAccessoryNone;
                    else 
                        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
                    break;
                case 2:
                    labelInfo.text=@"3";
if (cell.accessoryType==UITableViewCellAccessoryCheckmark) 
                        cell.accessoryType=UITableViewCellAccessoryNone;
                    else 
                        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
                    break;
                case 3:
                    labelInfo.text=@"4";
                    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
                    break;
                case 4:
                    labelInfo.text=@"5";
if (cell.accessoryType==UITableViewCellAccessoryCheckmark) 
                        cell.accessoryType=UITableViewCellAccessoryNone;
                    else 
                        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
                    break;
                default:
                    break;
            }
        }
0

精彩评论

暂无评论...
验证码 换一张
取 消