2017-01-08 6 views
0

In meiner firstViewController gibt es eine UIButton (GalleryButton) und in meiner secondViewController gibt es eine UITableView. Wenn der Benutzer auf den GalleryButton tippt, dauert es 2-3 Sekunden, bis die secondViewController geöffnet und die Bilder geladen sind. Ich möchte eine UIActivityIndicator zeigen, bis die secondViewController laden. Wie geht das?Aktivitätsanzeige bis zum Laden der nächsten Ansicht

+0

Sie darauf hingewiesen werden, könnten sofort und laden Sie die Bilder im Hintergrund für den Übergang . Auf diese Weise hat der Benutzer eine nahtlose Erfahrung. – BallpointBen

+0

Es scheint, dass es einen Download-Prozess in der zweiten Ansicht Controller auf dem Haupt-Thread läuft ... –

+0

kein Download-Prozess. Bilder werden von PhotoLibrary geladen –

Antwort

0

Sie sollten die Bilder in einen Hintergrund-Thread laden und die UIActivityIndicator im Haupt-Thread anzeigen. Ich antwortete, schon zu einem ähnlichen Problem hier: 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

Ich bin neu in Swift. Kannst du mir bitte sagen, wo soll ich diesen Code schreiben? Übrigens ziehe ich zu ** secondViewController ** über ** Show-Überleitung ** im Storyboard. –

+0

Dieser Code sollte in 'secondViewController' sein, wo Sie Ihre Bilder laden (ich vermute in der ViewDidLoad Methode). –

2

erstellen Activity Indicator Programetically in Ihrem Second-View-Controller

var activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray) 

hinzufügen Below-Code in viewDidLoad() von der zweiten Ansicht Contoller

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

, wenn Daten in der Tabellenansicht vollständig gefüllt ist als unten Code hinzu

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

diese

für mich gearbeitet Activity Indicator stoping
#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]; 
     }]; 
    }); 


} 
Verwandte Themen