1

我有一个PlayPageViewController作为rootViewController. PlayPageViewController将显示 3D 模型并在方法调用中调用editPages (),这需要几秒钟的等待。UIImages

我只想在开始时添加一个 loadingView,当PlayPageViewController完全加载时它会消失。

这是我的解决方案:

  1. 添加带有 activityIndi​​cator 的 loadingView。
  2. 当loadingView加载完毕,我就开始执行

但似乎没有用

    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];
    }
4

2 回答 2

1

当调用此方法时,您必须执行各自的方法来调用viewDidAppear方法,所有出现的任务都已完成。

于 2013-07-26T07:39:49.180 回答
0

方法是什么ViewLoad()?你的意思是viewDidLoad:?您可以在情节提要中设置所有视图,包括包含活动指示器的视图。此时不要加载模型,而是等到viewDidLoad:被调用。此时您可以使用Grand Central Dispatch开始加载模型。它可能看起来像这样:

- (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");
        });
    });
}

编辑:链接似乎已关闭。这可能是由于开发中心当前存在的问题。您可以在 Xcode Organizer 的文档窗格中找到该文档。

于 2013-07-26T08:04:22.303 回答