2009-05-21 3 views
1

보기를 변경할 때 내 iPhone에 UIActivityIndicatorView를 표시하려고합니다. iPhone의 UIActivityIndicatorView 관련 문제

- (void)viewDidLoad 
{ 

    spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    [spinner setCenter:CGPointMake(320/2.0, 460/2.0)]; // I do this because I'm in landscape mode 
    [self.view addSubview:spinner]; 
} 

버튼의 클릭 이벤트에

내가보기를 변경하려면 그 시간 사이에 내가 indicatorView 그래서, 나는 그것이

-(IBAction)buttonClick:(id)sender 
{ 

    [spinner startAnimating]; 
    ViewController *lController = [[ViewController alloc] initWithNibName: @"View" bundle:nil]; 
    self.viewController = lController; 
    [lController release]; 
    // 
    [[self mainController] dismissModalViewControllerAnimated:YES]; 
    [lViewController.view removeFromSuperview]; 
    [self.view addSubview: lController.view]; 
    [spinner stopAnimating]; 
} 

쓰기 있음을 보여주고 싶은 : 다음 코드를 작성했습니다 표시기가 표시되지 않으므로 plz이 내가 어디 잘못되었는지 말해 주시겠습니까?

답변

0

buttonClick에서 회 전자의 상단에 lController.view을 추가하는 것처럼 보입니다 (이전에 viewDidLoad에 추가됨). 귀하의 발언에서 모달 해고와 관련하여 어떤 일이 일어 났는지 알려주지 않으므로 그게 범인이 아니라고 가정합시다.

새 하위보기를 추가 한 후 [self.view bringSubviewToFront:spinner]을 호출하거나 [self.view insertSubview:lController.view belowSubview:spinner]을 호출하여 회 전자 아래에보기를 배치 할 수 있습니다. 회 전자의 hidesWhenStopped 속성을 YES으로 설정하여 중지시 자동으로 숨길 수 있습니다.

또 다른 사실은로드 및 전환보기가 실제로 그렇게 오래 걸리지 않을 수 있기 때문에 너무 빠르게 발생하면 회 전자가 표시되지 않을 수 있다는 것입니다.

1

UIActivityIndicator는 주 스레드에서 움직입니다 (애니메이션 루프 프레임은 실행 루프마다 변경됩니다). 시작하고 코드를 실행 한 다음 중지하면 애니메이션 실행 기회가 없습니다 (현재 실행 루프를 종료하지 않으므로).

코드를 백그라운드 스레드에서 실행 해보십시오. 이렇게하면 주 스레드가 애니메이션 프레임을 처리 할 수 ​​있습니다.