2011-12-16 65 views
1

在我的FirstViewController中,有一個IBAction調用SecondViewControllerViewControllers之間的UIActivityIndi​​catorView

SecondViewController在他的ViewDidLoad從服務器加載數組,因此FirtsViewControllerSecondViewController之間的轉換時間很長。

我想在FirstViewController中放一個UIActivityIndicatorView它會在IBAction y按下時動畫,當視圖之間的轉換完成時停止。

¿某些想法?

謝謝大家。

此致敬禮

回答

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

你可以像這樣文件

@interface SecondViewController 
{ 
    UIActivityIndicatorView *activityView; 
} 

@property (nonatomic, retain) UIActivityIndicatorView *activityView; 

@end 

在.m文件

@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] 
} 
相關問題