1

我是新手,希望我的应用程序在延迟后显示下一个屏幕。基本上我已经创建了控制器并添加了微调器。

- (void)viewDidLoad
{
    [super viewDidLoad];
    [spinner startAnimating];
    sleep(5);
    [spinner stopAnimating];
}

接下来我想展示我的下一个控制器,名为EntryViewController. 实现这一目标的最佳方法是什么?

如果需要,我会添加任何信息

4

2 回答 2

1

你可以使用-performSelector这样的方法:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [spinner startAnimating];
    [self performSelector:@selector(yourMethod) withObject:nil afterDelay:1];
}

您可以在其中-yourMethod添加代码以导航到下一个视图控制器:

-(void)yourMethod
{
    //Write the code for Navigation.
    [spinner stopAnimating];
}

不要忘记查看NSObject 类参考

于 2013-06-26T13:47:00.257 回答
1

一个。不要sleep在主线程中使用,因为它会阻塞整个 GUI。

湾。不要在 中做动画viewDidLoad,因​​为在这个阶段视图还没有出现。而是使用viewDidAppear.

C。“显示”视图控制器有不同的方法。这是呈现视图控制器的代码(即视图控制器不会被推送到 a UINavigationController)。查看此链接以获取有关呈现视图控制器的更多信息。该代码还解决了上述问题

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [spinner startAnimating];

double delayInSeconds = 5.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_current_queue(), ^{
        [self presentViewController: EntryViewController animated:YES completion:nil];
    });
}

使用dispatch有点高级,但你应该真正学习它。

于 2013-06-26T14:01:09.317 回答