2011-12-16 7 views
1

FirstViewControllerSecondViewController을 호출하는 IBAction이 있습니다. ViewDidLoad 그의 하중에서ViewController 간의 UIActivityIndicatorView

SecondViewControllerFirtsViewControllerSecondViewController 간의 전환 시간이 너무 길고 따라서위한 서버에서 어레이.

IBAction y를 누르면 애니메이션이 적용될 FirstViewControllerUIActivityIndicatorView을 넣고보기 간 전환이 완료되면 중지하십시오.

¿ 몇 가지 아이디어가 있습니까?

고맙습니다.

감사합니다.

답변

2

데이터를 비동기 적으로로드해야합니다. 예 :

// second view controller 
- (void)viewDidLoad 
{ 
    // show loading activity (e.g. UIActivityIndicatorView) 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     [self loadDataFromServer]; 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      // hide loading activity and refresh view with loaded data 
     }); 
    ); 
} 
0

서버 호출을 별도의 방법으로 작성하십시오. 두 번째 View 컨트롤러의 viewDidLoad에서 백그라운드 스레드의이 서버 메서드를 호출합니다. 활동 표시기로보기를 시작합니다. 한편 서버 메소드에서 호출이 완료되면 주 스레드에서 콜백 메소드를 호출하여 활동 표시기를 숨기고 두 번째보기 제어기에 필요한 것을 표시합니다.

1

이 경우 firstViewController 또는 secondViewController에 활동 표시기를 추가해야합니다.

또는 또 다른 옵션은 화면이 즉시 이동 한 후 서버에서 데이터를로드 위의 코드 줄에서

-(void)viewDidLoad  
{  
    timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(firstAPICall) userInfo:nil repeats:NO];  
} 

,이 같은 두 번째 뷰 컨트롤러를로드 타이머를 배치됩니다. "firstAPIcall"메소드 사용.

0

당신이 다음과 같이 수행 할 수 있습니다

당신의 SecondViewController의 viewDidLoad

에 .H에 하는 .m 파일에

@interface SecondViewController 
{ 
    UIActivityIndicatorView *activityView; 
} 

@property (nonatomic, retain) UIActivityIndicatorView *activityView; 

@end 

파일

@synthesize activityView; 

- (void) viewDidLoad 
{ 
    self.activityView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 80, 30, 30)]; 
      self.activityView.hidesWhenStopped = YES ; 
    [self addSubview:activityView]; 
    activityView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; 
    [activityView startAnimating]; 

    [self performSelector:@selector(getData) withObject:nil afterDelay:0.1]; 

} 

- (void) getData 
{ 
    // code for server call 
    . 
    . 
    // as downloading get complited 

    [self.activityView stopAnimating] 
}