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