2012-09-09 2 views
2

친절하고 배우고 있습니다.체크 표시가있는 UITableView에서 여러 개의 탭이 필요합니다.

아래의 코드는 처음에 행을 탭한 후 (체크 표시가 적절하게 위치 함) 실제로 같은 체크 표시를 제거하기 위해 셀을 두 번 두드려야한다는 사실을 제외하고 실제로 실제로 잘 작동합니다.

마찬가지로 제거한 후 체크 표시를하려면 두 번 누릅니다.

어떻게 수정합니까?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath]; 
    NSInteger selectedRow = indexPath.row; 

    if (thisCell.accessoryType == UITableViewCellAccessoryNone) { 
     thisCell.accessoryType = UITableViewCellAccessoryCheckmark; 
     if (selectedRow == 0) dm = 1; 
     else if (selectedRow == 1) athero1 = 1; 
     else if (selectedRow == 2) athero2 = 1; 
     else if (selectedRow == 3) athero3 = 1; 
     else if (selectedRow == 4) familyHistory1 = 1; 
     else if (selectedRow == 5) familyHistory2 = 1; 
    } 
    else { 
     thisCell.accessoryType = UITableViewCellAccessoryNone; 
     if (selectedRow == 0) dm = 0; 
     else if (selectedRow == 1) athero1 = 0; 
     else if (selectedRow == 2) athero2 = 0; 
     else if (selectedRow == 3) athero3 = 0; 
     else if (selectedRow == 4) familyHistory1 = 0; 
     else if (selectedRow == 5) familyHistory2 = 0; 
    } 
} 
+0

세포를 탭하면 didSelectRowAtIndexPath가 호출됩니까? 이 세포가 같은 물건에 속하는지 확인 했니? –

답변

0

두 개의 UITableView 컨트롤러를 네비게이션 컨트롤러 스택에 밀어 넣을 수 있습니까?

나는 이런 일이 있었고 두 번째 TableViewController가 푸시되는 switch 문에서 'break'가 누락되었습니다. 뷰의 모든 항목에는 두 번의 탭, '뒤로'버튼이 필요했습니다.

2

allowsMultipleSelectionYES으로 설정되어 있지 않은지 확인하십시오. 이 속성을 사용하지 않을 때 설정된 기본값은 NO입니다. 클래스의 어느 위치에서나이 속성을 사용하는 경우 NO으로 설정하여 작동하는지 확인하십시오. 이로 인해 행을 선택하는 데 2 ​​개의 탭이 필요하게됩니다.

1

선택한 행 색인을 저장할 어레이가 있습니다. -didSelect에서 배열에 행 인덱스가 이미 있는지 확인하고, 추가하지 않으면 배열에서 제거하십시오. 그리고 테이블을 다시로드하십시오. 그게 다야. 나는 이것이 효과가있을 것이라고 믿는다. :]