2011-03-23 3 views
1

기본적으로 나는 각 셀에 uiprogressview와 uiswitch가있는 uitableview를 가지고 있습니다. 스위치를 토글하면 progressview의 가시성이 토글됩니다.uitableview의 각 행에서 uiprogressview의 가시성을 전환하면 한 번에 여러 번 토글합니다.

그러나.

행 스위치를 토글하면 0입니다. progressview in row : 0 AND row : 11이 표시됩니다.

내 스위치이 있습니다 [(UISwitch *) cell.accessoryView addTarget을 : 자기 행동 : @selector (PrefetchStudy : forControlEvents : UIControlEventValueChanged] 왜 이런 일이에 관해서는

-(void)PrefetchStudy:(id)sender 
{ 
UISwitch *tmpSwitch = (UISwitch*)sender; 

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:tmpSwitch.tag inSection:0]; 
CustomCell *cell = (CustomCell *)[self.tableview cellForRowAtIndexPath:indexPath]; 
NSString *tmp = cell.patient_name.text; 
NSLog(@"This is the patient name of the selected row: %@", tmp); 
if(tmpSwitch.on) 
{ 
    cell.progressBar.hidden = NO; 

} 
else 
{ 
    cell.progressBar.hidden = YES; 
} 


} 

제안 : 여기

는 작업입니다?

답변

0

코드에 몇 가지 중단 점을 넣었습니까? 그렇다면이 메소드가 두 번 호출됩니다 (행 0과 행 11에 대해 한 번). 또는 cellForRowAtIndexPath 메소드가 행 11의 가시성으로 행 11을 잘못 갱신합니까?

+0

I NSLog(), 그 셀에서 다른 값 I가 progressView의 가시성을 변경하고 같은 경우 .. 그것은 단지 1 행의 데이터만을 출력하고 올바른 행의 데이터를 출력하고 있습니다 ... – Critter

+0

그게 이상합니다. 제가 당신이라면 프로그 레스 바의 숨겨진 속성이 변경 될 때마다 중단 점에 도달 할 것이며, 프로그램이 언제 도달하는지 그리고 어떻게되는지 볼 수 있습니다. –

0

UITableView는 성능 향상을 위해 uitableviewcell을 다시 사용하기 때문에 각 셀의 수를 셀 수 없습니다. (이 경우에, 행 (11)이 행 (1) 셀을 재사용)는 셀의 상태를 초기화한다 :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath