2013-10-18 3 views
0

테이블보기를 사용하고 있으며 확인란이있는 사용자 지정 셀이 있습니다. 테이블 뷰로 셀의 체크 박스가 이미 일부 논리 계산에 의해 선택됩니다. 화면 상단에 바 버튼이 있습니다. 내가 원하는 건 그 버튼을 클릭 할 때 선택된 체크 박스와 관련된 수량이 배열에 들어가야한다는 것입니다.셀 재사용 개념의 문제

예를 들어, 현재 테이블 뷰에있는 셀이 6 개있는 경우 모두 모두 선택되어 있지만 현재 4 개만 표시됩니다. 버튼 클릭만으로 4 개의 값이 배열에 추가됩니다.

버튼을 클릭 할 때 선택한 모든 확인란을 어떻게 검색합니까? 버튼의 클릭에 코드는 다음과 같습니다 - (IBAction를) btn_AddRefill_click (ID) 보낸 사람 {

for (int i=0; i < [arr_RxDetails count]; i++) { 


    NSIndexPath * indexpath = [NSIndexPath indexPathForRow:i inSection:0]; 
    //NSLog(@"The indexpath is %@",indexpath); 
    MyMedicationCell * cell = (MyMedicationCell *) [tableview cellForRowAtIndexPath:indexpath]; 

    // here I am checking if the button is selected or not. 
    if ([cell.btn_RxCheck isSelected]) { 
     //NSLog(@"the Rx id is %@",[[arr_RxDetails objectAtIndex:i]valueForKey:@"RxId"]); 
     [self.arr_RxNo addObject:[[arr_RxDetails objectAtIndex:i]valueForKey:@"RxId"]]; 


    } 
} 
NSLog(@"the array is %@",arr_RxNo); 
[self.obj_AddRxs didSelectRxs:self.arr_RxNo]; 

} 루프가 6 시간 동안 실행이 코드에서와 같이

하지만이 검사를 감지 상자가 현재 4 개의 셀에서만 선택 될 수 있습니다. 어떻게해야합니까?

답변

0

정확하게 이해한다면, 전체 데이터 세트의 크기가 아닌 배열에 값을 체크할지 여부를 저장해야한다고 생각합니다. 이 경우 6.

valueChangedUIControlEvent 확인란에 대상 방법을 추가하십시오. 이 메서드는 행의 유무를 확인합니다.

또한 cellForRowAtIndexPath에는 배열의 내용에 따라 확인란의 값을 설정하십시오.

데이터를 저장하기위한 기본으로 실제 셀을 사용하려고하면 UITableView가 제공하는 데이터 및 UI 가상화에서 얻은 효율성의 목표를 무효로하는 전체 테이블을 메모리에 보관해야합니다. 도움이

희망,

데이브

+0

하지만보기를로드 할 때 확인란을 선택했는지 여부를 어떻게 확인할 수 있습니까? 체크 박스는 셀의 일부이기 때문에. 모든 속성은 셀 자체에서 관리합니다. 값을 변경 한 메소드가 뷰 로딩시 실행되지 않아 체크 박스를 감지 할 수 없으며 여전히 4가 선택된 tableview에 의해 관리됩니다. – Shikhar

+0

cellForRowAtIndexPath에서 : 셀을 만들 때 UITableViewController의 메서드 인 확인란 컨트롤에 대상을 추가 할 수 있습니다. 이 방법에서는 체크 박스가 선택되었는지 여부에 대한 값을 저장합니다. –

0

당신은 만들 수 선택 확인란을 추적 할 것이다 NSMutableArrayselectedCheckbox.

체크 박스는 단지 배열

[selectedCheckbox addObject:@"2"]; 

에 체크 박스 번호를 추가하고 선택 해제 할 때마다 단지 배열 이제

[selectedCheckbox removeObject:@"2"]; 

당신이 얻을이 배열을 참조 할 수 있습니다에서 제거 선택할 때마다 선택된 체크 박스의 수와 선택된 체크 박스의 인덱스. 희망이 도움이 될 것입니다.