2017-01-08 66 views
0

在我的firstViewController中有UIButton(GalleryButton),在我的secondViewController中有UITableView。當用戶點擊GalleryButton時,需要2-3秒的時間才能打開secondViewController並加載圖像。我想顯示一個UIActivityIndicator,直到加載secondViewController。怎麼做?活動指示器直到加載下一個視圖

+0

你可能會被告知在後臺立即轉換和加載圖像。這樣用戶就擁有了更加無縫的體驗。 – BallpointBen

+0

似乎在主線程上運行的第二個視圖控制器中有一個下載過程... –

+0

沒有下載過程。圖像從PhotoLibrary –

回答

0

您應該加載在後臺線程中的圖像,並在主線程顯示UIActivityIndicator。我已經回答了類似的問題在這裏:https://stackoverflow.com/a/41529056/1370336

// Main thread by default: 
// show progress bar here. 

DispatchQueue.global(qos: .background).async { 
    // Background thread: 
    // start loading your images here 

    DispatchQueue.main.async { 
     // Main thread, called after the previous code: 
     // hide your progress bar here 
    } 
} 
+0

我是新來的。你能告訴我我應該在哪裏寫這個代碼? 順便說一下,我正在轉移到** secondViewController **通過** show segue **在故事板。 –

+0

這段代碼應該放在'secondViewController'中,你要加載你的圖片(我在viewDidLoad方法中猜測)。 –

2

在你的第二個視圖控制器創建活動指示燈Programetically

var activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray) 

添加下面的代碼中的第二個視圖的viewDidLoad()位指示

activityIndicator.hidesWhenStopped = true 
    activityIndicator.center = view.center 
    activityIndicator.startAnimating() //For Start Activity Indicator 

當數據被填入表視圖完全不是添加以下代碼回採活動指示燈

activityIndicator.stopAnimating() //For Stop Activity Indicator 
0

這個工作對我來說

#import "ViewController.h" 
#import "NextVC.h" 
@interface ViewController() 
@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *aiStart; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.aiStart.hidden = YES; 
} 

- (void)viewDidDisappear:(BOOL)animated{ 
    [super viewDidDisappear:animated]; 
    self.aiStart.hidden = YES; 
    [self.aiStart stopAnimating]; 
} 

- (IBAction)btnShowNextVCTapped:(id)sender { 
    dispatch_async(dispatch_get_main_queue(), ^{ 

     self.aiStart.alpha = 0; 
     self.aiStart.hidden = NO; 
     [self.aiStart startAnimating]; 

     [UIView animateWithDuration:0.3 animations:^{ 
      self.aiStart.alpha = 1; 
     } completion:^(BOOL finished) { 
      NextVC* nextVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextVC"]; 

      [self presentViewController:nextVC animated:YES completion:nil]; 
     }]; 
    }); 


} 
相關問題