2013-02-07 21 views
0

我試圖首次使用故事板,並遇到問題。顯示加載對話框,同時使用故事板進行模態轉換

當模式視圖控制器加載時,我需要顯示一個加載對話框。

我會更好地解釋它:我的導航欄上有一個按鈕,當用戶點擊它時會出現一個模式視圖控制器,但它需要幾秒鐘的時間,所以我需要對用戶說:「應用程序未鎖定」。

更新

這是正常工作的最終代碼:

-(void)showLoading { 

    UIActivityIndicatorView *loading = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    loading.frame = CGRectMake(275, 0, 40, 40); 
    [loading startAnimating]; 

    [UIView animateWithDuration:0 animations:^ { 

     [self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:loading]]; 

    } completion: ^(BOOL completed) { 

     UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
     UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
     [self presentModalViewController:vc animated:YES]; 

    }]; 

} 

viewDidLoad

[myBarButtonItem setTarget:self]; 
[myBarButtonItem setAction:@selector(visualizzaCaricamento)]; 

回答

1

一個簡單的方法是使用內置的UIActivityIndicator。它來自大大小小的品種。你可以把它放在一切的視圖中,或者你可以將它添加到你的UINavigationBar

這是一些代碼,將用加載微調代替按鈕。

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
[indicator startAnimating]; 

[self.navigationBar setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:indicator]]; 

更新

// In your viewDidLoad or somewhere like that. 
[self.navigationBar setRightBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Do" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething:)]]; 

- (void)doSomething:(id)sender { 
    // Show spinner 
    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    [self.navigationBar setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:indicator]]; 
    [indicator startAnimating]; 

    // ... Load View 
} 
+0

我把它放在viewWillDisappear方法,是實現它一個更好的辦法?感謝您的回答! – Gnamm

+0

要麼在那裏,要麼可以將它放在實際的按鈕敲擊方法中。 –

+0

我試過 [myBarButtonItem setAction:@selector(showLoading)]; 但無效 – Gnamm