【发布时间】:2017-01-05 07:48:56
【问题描述】:
我正在尝试构建一个启动画面,所以我希望第一个视图控制器在 3.0 秒后自动移动到第二个 ViwController 我尝试了下面的方法但是一个无限循环已经开始我应该做什么,我应该如何停止第二个视图控制器。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"%p", self);
NSLog(@"1st Controller");
[self.navigationController setNavigationBarHidden:YES animated:YES];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self loadingNextView];
});
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)loadingNextView{
LoginViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
[self.navigationController pushViewController:viewController animated:true];
}
//LoginViewController.h
@interface LoginViewController : ViewController
@end
//LoginViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"2nd View Controller");
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
【问题讨论】:
-
performSelector:withObject:afterDelay:启动NSDefaultRunLoopMode。注释掉的时候为什么不用dispatch_after? -
@nynohu 先生,这两种方法我都试过了,但问题还是一样,让我更新更改。
-
@nynohu 是更新
-
如果还是调用
loadingNextView,看看你的viewWillAppear,是不是调用了很多次? -
@nynohu 以前我用过同样的东西,但这是我第一次遇到问题。到达第二个视图控制器后如何将其解散回第一个视图控制器?
标签: ios objective-c uiviewcontroller uinavigationcontroller grand-central-dispatch