我是新手,希望我的应用在延迟一段时间后显示下一个屏幕。 基本上我已经创建了控制器并添加了微调器。
- (void)viewDidLoad
{
[super viewDidLoad];
[spinner startAnimating];
sleep(5);
[spinner stopAnimating];
}
接下来,我想展示名为EntryViewController
的下一个控制器。实现这一目标的最佳方法是什么?
如果需要,我会添加任何信息
答案 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
有点先进,但你应该真正学习它。