سؤال

I have an PlayPageViewController as rootViewController. The PlayPageViewController will display 3D models and UIImages in an method call editPages(), which will takes several seconds to wait.

I just want to add an loadingView at start and when PlayPageViewController gets fully loaded it will disappear.

Here is my solution:

  1. Add an loadingView with activityIndicator.
  2. When the loadingView is loaded, I will begin to implement

but seems it didn't work

    STLoadingViewController *loadingView = 
     [[STLoadingViewController alloc]initWithNibName:@"STLoadingViewController" 
                                              bundle:nil];
    loadingView.view.frame=CGRectMake(0, 0, 1024, 768);
    [self.view insertSubview:loadingView.view atIndex:3];

    if(loadingView.isViewLoaded && loadingView.view.window)
    {
        [self.view insertSubview:self.playPageViewController.view atIndex:4];
        [self.playPageViewController setEditingPage:pageIndex];
        [loadingView.view removeFromSuperview];
    }
هل كانت مفيدة؟

المحلول 2

What is the ViewLoad() method? Do you mean viewDidLoad:? You could setup all your views in the storyboard, including a view containing the activity indicator. Don't load the model at this point but wait until viewDidLoad: is called. At this point you may use Grand Central Dispatch to start the loading of the model. It could look a bit like this:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    // You need to setup the activity indicator outlet in the storyboard
    [_activityIndicator startAnimating];
}
- (void)viewDidLoad {
    [super viewDidLoad];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        // Do the expensive work on the background
        [NSThread sleepForTimeInterval:5.0f];
        // All UI related operations must be performed on the main thread!
        dispatch_async(dispatch_get_main_queue(), ^{\
            // Replace the view containing the activity indicator with the view of your model.
            [_activityIndicator stopAnimating];
            NSLog(@"STOP");
        });
    });
}

Edit: The link seems to be down. This is probably due to the current problems with the Dev Center. You can find the documentation in the documentation pane of the Xcode Organizer.

نصائح أخرى

You have to do your respective methods to call in viewDidAppear method when this method is called all the appearing task had been finished.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top