从控制器呼叫控制器

时间:2013-06-26 13:43:34

标签: iphone ios objective-c uiviewcontroller

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

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

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

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

2 个答案:

答案 0 :(得分: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 Class Reference

答案 1 :(得分:1)

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

湾不要在viewDidLoad中执行动画,因为在此阶段尚未显示视图。而是使用viewDidAppear

℃。有多种方法可以“显示”视图控制器。这是用于呈现视图控制器的代码(即视图控制器不会被推送到UINavigationController)。有关呈现视图控制器的更多信息,请查看this link。该代码还解决了

以上的问题
-(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有点先进,但你应该真正学习它。