2012-02-05 3 views
1

내 tableview에 이상한 문제가 있습니다. 행을 선택하고 확인 표시 만 표시하려고합니다. 여러 섹션이있는 테이블 뷰가 있습니다. 행을 선택하고 체크 표시가 잘되지만 테이블 뷰 아래로 10 열, 그 행도 선택됩니까 ??? 하나 이상의 행을 선택할 때, 다시 10 행 아래로 여러 선택이 나타납니다.한 행을 두드리면 여러 행을 선택할 수 있습니다.

내가 사용하고 있습니다 : 다른 행을 선택하지 않을 것

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath { 
    [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:NO]; 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:newIndexPath]; 
    if (cell.accessoryType == UITableViewCellAccessoryNone) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 

     // Reflect selection in data model 
    } else if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     // Reflect deselection in data model 
    } 
} 

답변

0

, 즉 같은 체크 표시 셀 재사용되고있다. tableView:didSelectRowAtIndexPath:에서 상태를 저장하기 위해 셀을 사용하고 있습니다. tableView:cellForRowAtIndexPath:에서 행에 체크 표시가 있어야하는지 여부는 지정하지 않습니다.

은 당신이 가능성이하고 싶은 것입니다 것은 ivarNSMutableSet과에 didSelectRow..이 중 하나를 추가하거나 상태를 확인 됨에 따라 세트에서 indexPath을 제거합니다. 그런 다음 cellForRow..에서 속성을 indexPath의 회원 자격을 기반으로 설정하십시오.

편집 죄송합니다. 데이터 모델에서 상태를 저장할 위치에 대한 의견을 찾지 못했습니다. 이 경우 수표를 cellForRow...에 추가하면됩니다. 이것이 일반적인 질문이기 때문에 원래 답변을 남겨 둘 것입니다.

관련 문제