Сбросить флажки UItableViewCell - PullRequest
       3

Сбросить флажки UItableViewCell

1 голос
/ 24 августа 2011

следующий код начинается с пустых ячеек и добавляет галочку к выбранной ячейке, но после добавления, если вы снова нажмете эту ячейку, она не будет стерта. Я пытаюсь сбросить его каждый раз, когда didSelectRowAtIndexPath вызывается. Как очистить ячейку, чтобы пометить только одну? Спасибо.

- (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;
        }
    }
}        

Ответы [ 5 ]

4 голосов
/ 06 марта 2015

Этот код удалит все галочки в таблице

[[self.tableView visibleCells] makeObjectsPerformSelector:@selector(setAccessoryType:) withObject:UITableViewCellAccessoryNone];
3 голосов
/ 24 августа 2011

Просто скопируйте и вставьте это. Оно работает.

  //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.
   }
1 голос
/ 24 августа 2011

Попробуйте это:

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
    cell.accessoryType = UITableViewCellAccessoryNone;
} else {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
0 голосов
/ 24 августа 2011

сделать это: -

    - (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 голосов
/ 24 августа 2011

В вашем коде вы начинаете с

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

, которые убирают галочку с выбранной ячейки, но позже вы снова назначаете галочку с

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;
    }

Итак, вы можете использовать что-то вроде

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

для переключения галочки и

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

для метки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...