2009-05-25 3 views
0

내 응용 프로그램에서 내보기 중 하나를로드하려면 정상보다 오래 걸립니다 (그림이 많은 스크롤보기) 그래서 사용자에게보기가로드되는 동안 어떤 일이 발생했는지 알 수있게되었습니다 . 따라서로드하는 데 걸리는 시간을 타이머를 사용하는 진행률 표시 줄에 넣었습니다. 유일한 문제는 버튼에 손을 대면 iPhone이 여전히 뷰를로드 한 다음 새 뷰가 열릴 때 진행 막대가 나타나고 타이머가 시작된다는 것입니다. 진행 막대가 단추와 동일한보기에 나타나고 단추를 누르면 두 번째보기가로드되고 진행 표시 줄이 가득 차면 두 번째보기로 이동하도록 설정할 수 있습니다. 지금까지 제가 가지고있는 코드는 다음과 같습니다.진행률 표시 줄 사용 새보기로드

- (void) button 
{{

if (!self.baseSheet) { baseSheet = [[UIActionSheet alloc] initWithTitle:@"Please Wait" delegate:self cancelButtonTitle:nil destructiveButtonTitle: nil otherButtonTitles: nil]; [baseSheet setNumberOfRows:5]; [baseSheet setMessage:@"Loading Photos"]; UIProgressView *progbar = [[UIProgressView alloc] initWithFrame:CGRectMake(50.0f, 70.0f, 220.0f, 90.0f)]; progbar.tag = PROGRESS_BAR; [progbar setProgressViewStyle: UIProgressViewStyleDefault]; [baseSheet addSubview:progbar]; [progbar release]; } UIProgressView *progbar = (UIProgressView *)[self.view viewWithTag:PROGRESS_BAR]; [progbar setProgress:(amountDone = 0.0f)]; [NSTimer scheduledTimerWithTimeInterval: 0.5 target: self selector: @selector(incrementBar:) userInfo: nil repeats: YES]; [baseSheet showInView:self.view]; [[self navigationController] pushViewController:[[ScrollViewController alloc] init] animated:YES];

}}

답변

0

당신이 완전히 분리 된 방법으로 진행 막대 루틴을 배치 봤어?

때때로 UIView/UIImageView 관련 변경 사항과 함께 메서드의 일부 루틴 실행 속도에 문제가 있습니다. 때로는 특정 뷰 관련 루틴의 변경 사항이 실질적으로 이 나타나기 전에 실제로 수행되는 것보다 빠르게 화면에서 업데이트됩니다.이 나타납니다. 나는 일반적으로 뷰 변경 사항을 너무 늦게 표시하는 루틴을 완전히 별개의 메소드에 배치하고 그 메소드를 BEFORE로 호출하여이를 수정할 수 있음을 발견했다.