2013-03-24 1 views
0

그래서 정상적인 자막 유형 셀과 progressView가 포함 된 사용자 정의 셀의 두 가지 유형의보기가있는보기가 있습니다. 대리자가 완료된 백분율 메서드를 호출하면 해당 셀 (테이블보기의 한 셀만 진행률 막대를 가질 수 있음)에서 진행률 뷰를 업데이트해야합니다. 그것은 매우 업데이트셀이 포함 된 UITableView 진행 표시 줄

- (void)finishedPercent 
{ 
    percent += 0.01; 

    // reload cell 
    //NSLog(@"received percent"); 
    [self.tableView beginUpdates]; 
    [self.tableView reloadRowsAtIndexPaths:@[indexPathOfRunningFormula] withRowAnimation:UITableViewRowAnimationNone]; 
    [self.tableView endUpdates]; 
} 

산발적으로 제로에 가까운 90 %에서 점프하거나 같은 : 여기

는 코드입니다.

이 출력

2013-03-24 19:15:53.285 FutureSight[5455:12e07] *** Assertion failure in -[_UITableViewUpdateSupport _setupAnimationsForNewlyInsertedCells], /SourceCache/UIKit_Sim/UIKit-2380.17/UITableViewSupport.m:1145 
2013-03-24 19:16:03.850 FutureSight[5455:16003] percent done 
2013-03-24 19:16:04.325 FutureSight[5455:16103] percent done 
2013-03-24 19:16:04.372 FutureSight[5455:16103] percent done 
2013-03-24 19:16:04.478 FutureSight[5455:16003] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2380.17/UITableView.m:909 
2013-03-24 19:16:04.477 FutureSight[5455:12e07] percent done 
2013-03-24 19:16:07.727 FutureSight[5455:16103] percent done 
2013-03-24 19:16:07.790 FutureSight[5455:16103] percent done 
2013-03-24 19:16:07.801 FutureSight[5455:16003] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2380.17/UITableView.m:909 

문제가 무엇의 일부인가?

변경된 코드 아직

- (void)finishedPercent 
{ 
    percent += 0.01; 
    PSFormulaProgressCell *cell = (PSFormulaProgressCell *)[self.tableView cellForRowAtIndexPath:indexPathOfRunningFormula]; 
    cell.progress.progress = percent; 

// // reload cell 
    NSLog(@"received percent"); 
// [self.tableView beginUpdates]; 
// [self.tableView reloadRowsAtIndexPaths:@[indexPathOfRunningFormula] withRowAnimation:UITableViewRowAnimationNone]; 
// [self.tableView endUpdates]; 
} 

작동하지 않습니다

에, 그것은 ..

FutureSight(6368,0xb0115000) malloc: *** error for object 0xff39fd0: double free 
*** set a breakpoint in malloc_error_break to debug 
FutureSight(6368,0xb0365000) malloc: *** error for object 0xff392c0: double free 
*** set a breakpoint in malloc_error_break to debug 
2013-03-24 20:27:13.188 FutureSight[6368:12e03] received percent 
2013-03-24 20:27:13.189 FutureSight[6368:15503] received percent 
2013-03-24 20:27:13.252 FutureSight[6368:15503] received percent 
2013-03-24 20:27:13.321 FutureSight[6368:15407] received percent 
2013-03-24 20:27:13.383 FutureSight[6368:12e03] received percent 
2013-03-24 20:27:13.444 FutureSight[6368:15407] received percent 
2013-03-24 20:27:13.444 FutureSight[6368:12e03] received percent 
2013-03-24 20:27:13.509 FutureSight[6368:12e03] received percent 
2013-03-24 20:27:13.509 FutureSight[6368:15407] received percent 
2013-03-24 20:27:13.579 FutureSight[6368:15503] received percent 
FutureSight(6368,0xb0261000) malloc: *** error for object 0x7a0c400: pointer being freed was not allocated 
*** set a breakpoint in malloc_error_break to debug 
2013-03-24 20:27:13.846 FutureSight[6368:15407] received percent 
2013-03-24 20:27:13.846 FutureSight[6368:12603] received percent 
+1

왜 행을 다시로드하고 있습니까? 진행률 막대를 직접 업데이트하지 않는 이유는 무엇입니까? 또한이 'finishedPercent' 메소드가 백그라운드 스레드가 아닌 주 스레드에서 호출되는지 확인하십시오. – rmaddy

+0

진행률 표시 줄 업데이트가 제대로 작동하지 않습니다 – user1028028

+1

메인 스레드에서 'finishedPercent' 호출 여부를 확인하지 않았습니다. – rmaddy

답변

0

당신 만 UIProgressView 아닌 전체 셀을 업데이트해야합니다을 진행 표시 줄을 표시하지만 새로운 채 웁니다. 'reloadRowsAtIndexPaths'가 필요 없습니다.

+0

여전히 작동하지 않습니다 .. 새 코드를 참조하십시오 .. – user1028028

+0

시도해 보셨습니까 [cell.progress setNeedsDisplay ] 그것을 업데이트 한 후? – Matt

+0

시도해 봤는데 ... 효과 없음 ... – user1028028