2010-07-13 4 views
0

모든 셀에서 체크 상자를 잃거나 클릭하면 다른 표보기로 이동하는 UITableView가 있습니다. 모든 테이블에 대해, 나는 그 테이블에있는 모든 셀과 그 안에있는 모든 셀을 체크하는 check all 버튼을 추가하고 싶다. 하나의 UITableViewCell이 TableView에있는 모든 체크 박스를 토글하는 것을 어떻게 허용합니까?iPhone의 모든 항목을 확인하십시오. UITableView

편집 : 이상하게

for(int i = 0; i < [tableView numberOfRowsInSection:0]; i++){ 
       UITableViewCell *newCell = [tableView cellForRowAtIndexPath:[[indexPath indexPathByRemovingLastIndex] 
                      indexPathByAddingIndex: i]]; 
       newCell.accessoryType = UITableViewCellAccessoryNone; 
      } 

: 인덱스 경로의 마지막 인덱스를 제거하고, 새 행 번호를 대체,이 같은 전체 테이블을 통해 이동과 선택을 해제 할 수 있어요 , 10 번째 셀마다 건너 뜁니다. 심지어 일관성도 없습니다. 수년간의 목록을 보려면 때로는 2003 년과 1993 년, 때로는 2003 년과 1991 년 등을 확인하지 않는 경우도 있습니다. 항상 10 번째 셀 정도가되지만 패턴을 찾을 수 없습니다.

답변

1

세포를 클릭하면 didSelectRowAtIndexPath가 호출됩니다. 그 시점에서해야 할 일은 tableView cellForRowAtIndexPath를 사용하는 것입니다 : indexPath 메소드를 사용하여 모든 셀을 하나씩 되돌리고 checkmark에 액세서리 유형을 설정하십시오 ... 희망 이 도움이

EDIT : 만약 당신이 어쩌면 일종의 정렬 (귀하의 코드를 보지 않고 무엇을 정확하게 말할 당신이) 편집 할 수있는 또 다른 방법입니다,하지만 당신은 값을 보유하고 일부 배열을 가지고 셀에 체크 마크가 필요하면 cellForRowAtIndexPath를 사용하여 체크 마크 액세서리를 할당 할 수 있으므로 셀을 선택하면 배열의 모든 값을 원하는 값으로 설정하고 UITableViews reloadData를 호출 할 수 있습니다. .. 그게 무슨 뜻입니까? :) heres는 약간의 코드 스 니펫을 ... 그 시도하고 좀 더 명확하게 은 행

그래서 당신은 당신은 단지 배열에 숫자를 뒤집어하고있는 tableView에 reloadData를 호출 할 수 있습니다 didSelectRowAtIndexPath에서 볼 수
 NSMutableArray shouldHaveCheckmark; //this array will be of size x 
//(one for each row) and hold NSNUmbers 0 means not checked 1 means checked you initialize 
//this somewhere (viewDidLoad maybe) and should be declared in your .h file 
    //this is cellForRowAtIndex path 
    -(UITableViewCell)cellForRowAtIndexPath:(NSIndexPath*)path 
    { 
     UITableViewCell *cell=... 
     if([[shouldHaveCheckmark objectAtIndex:path.row] boolValue]) 
      //assign checkmark accesory 
    //other code 
    return cell; 
    } 

의 1 개 부와 X 양을 가정 할 수 있습니다 접근 방식도 잘 작동합니다.

+0

감사합니다.하지만 각 셀의 색인 경로는 어떻게 찾습니까? 나는 사용하려고 : [tableView cellForRowAtIndexPath : [NSIndexPath indexPathForRow : i inSection : 0]]]; 0에서 마지막 테이블 행까지이지만 이전 테이블로 돌아 가면 응용 프로그램이 중단됩니다. – ike

+0

당신이 편집해야하는 셀의 인덱스 경로를 알고 있어야합니다. 그렇지 않으면 어딘가에 저장할 수 있습니다 ... 왜 당신이 응용 프로그램을 왜 부숴 버리는 지 알지 못합니다. 어떤 코드를 게시하면 그것을 볼 수 있습니다. 내가 충돌을 일으킬 수있는 것을 볼 수 있다면 알려주세요. – Daniel

+0

다른 방법으로는 제 편집에 menitoned입니다. – Daniel

관련 문제