2011-08-24 3 views
1

다음 코드는 빈 셀로 시작하고 선택한 셀을 선택하면 체크 표시가 추가되지만 한 번 추가하면 해당 셀을 다시 누르면 지워지지 않습니다. didSelectRowAtIndexPath가 호출 될 때마다 다시 설정하려고합니다. 하나만 표시되도록 셀을 지우는 방법은 무엇입니까? 감사.UItableViewCell 체크 표시 다시 설정

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

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

    if (indexPath.section == 0) { 

    switch (indexPath.row) { 
     case 0: 
      [email protected]"1"; 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
      break; 
     case 1: 
      [email protected]"2"; 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
      break; 
     case 2: 
      [email protected]"3"; 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
      break; 
     case 3: 
      [email protected]"4"; 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
      break; 
     case 4: 
      [email protected]"5"; 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
      break; 
     default: 
      break; 
     } 
    } 
}   

답변

3

에 대한

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} else { 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
확인 표시 전환에 대한

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

같은 사용 뭔가 그냥이를 복사하여 붙여 넣습니다. 그것은 작동합니다.

//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. 
    } 
+0

안녕에 모두 체크 표시를 제거, 코드는 기본적으로 선택한 셀 때까지 텍스트가 표시되지 않는 거의 완벽한 excepts를 작동 다른 셀이 눌러졌습니다! 어떻게 해결할 수 있을까요? – Ruth85

+0

예를 들어, voidDidLoad, selectedCell = 2 일 때 다른 셀을 누를 때까지 셀에 텍스트가 표시되지 않습니다. – Ruth85

+0

의 값은 selectedCell의 값이 -1입니다. – mayuur

1

이 시도 : 코드에서

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

당신이 선택한 셀에서 확인 표시를 제거

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

로 시작하지만 나중에

switch (indexPath.row) { 
    case 0: 
     [email protected]"1"; 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     break; 
    case 1: 
     [email protected]"2"; 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     break; 
    case 2: 
     [email protected]"3"; 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     break; 
    case 3: 
     [email protected]"4"; 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     break; 
    case 4: 
     [email protected]"5"; 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     break; 
    default: 
     break; 
    } 
다시 체크 표시를 할당

그래서, 당신은 c 라벨

0

이 작업을 수행 : -

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

     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 


     if (indexPath.section == 0) { 

      switch (indexPath.row) { 
       case 0: 
        [email protected]"1"; 
        if (cell.accessoryType==UITableViewCellAccessoryCheckmark) 
         cell.accessoryType=UITableViewCellAccessoryNone; 
        else 
         cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break; 
       case 1: 
        [email protected]"2"; 
if (cell.accessoryType==UITableViewCellAccessoryCheckmark) 
         cell.accessoryType=UITableViewCellAccessoryNone; 
        else 
         cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break; 
       case 2: 
        [email protected]"3"; 
if (cell.accessoryType==UITableViewCellAccessoryCheckmark) 
         cell.accessoryType=UITableViewCellAccessoryNone; 
        else 
         cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break; 
       case 3: 
        [email protected]"4"; 
        cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break; 
       case 4: 
        [email protected]"5"; 
if (cell.accessoryType==UITableViewCellAccessoryCheckmark) 
         cell.accessoryType=UITableViewCellAccessoryNone; 
        else 
         cell.accessoryType = UITableViewCellAccessoryCheckmark; 
        break; 
       default: 
        break; 
      } 
     } 
4

이 코드는 테이블

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

이 작업을 위해 UITableViewCellAccessoryNone이 래핑되어야한다는 것을 알았습니다 : [[self.tableView visibleCells] makeObjectsPerformSelector : @selector (setAccessoryType :) withObject : @ (UITableViewCellAccessoryNone)]; – fatuhoku

관련 문제