我遇到了一些我从未见过的东西。情景如下。我最初的VC有一个注册按钮,当被点击时,会引起一对独立的视图控制器处理注册过程(我要求用户凭据,如果服务器要求,我要求输入验证码)。当这个过程完成后,我将一个自定义对象保存到稍后需要的NSUserDefaults中。然后再次显示初始VC。ViewController没有以编程方式执行segue
基本上,我确保我在主线程中并且保存了自定义对象。如果这些条件得到满足,我然后推动应用程序的主要部分。
这里是相关的代码,我的所有日志都显示在输出窗口中,但是segue不会发生。
- (void)viewDidLoad {
[super viewDidLoad];
self.complete = false;
if([NSThread isMainThread]){
NSLog(@"Main Thread-Yes");
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"CUSTOMOBJECT"]) {
NSLog(@"Will begin pushToAuthenticate");
[self pushAuthenticateController];
}
} else {
NSLog(@"Main Thread-No");
}
}
- (void)pushAuthenticateController{
[self performSegueWithIdentifier:@"pushMainVC" sender:self];
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"pushMainVC"]) {
NSLog(@"PrepareForSegue-pushMainVC");
[segue.destinationViewController.navigationItem setHidesBackButton:YES];
[segue.destinationViewController.navigationItem setTitle:@"MainVC"];
}
}
在故事板我有初始VC与MainVC连接一SEGUE,对于赛格瑞标识符相匹配“pushMainVC”,如果我关闭并重新打开该应用程序(登记后)塞格斯确实发生。控制台输出为两个实例(登记和关闭并重新打开该应用之后重新加载初始VC)如下:
APPNAME [4106:1628238]主线程是
APPNAME [4106:1628238]将开始pushToAuthenticate
APPNAME [4106:1628238] PrepareForSegue-pushMainVC
任何想法,为什么这可能发生,任何一件小事我的思念,或任何帮助将不胜感激。非常感谢。
NSUserDefault并没有保存NSObject的子类自定义对象,据我所知 –
你试过在'viewWillAppear'而不是'viewDidLoad'中推入segue吗? – dirtydanee
可能重复的[对ViewDidLoad执行Segue](http://stackoverflow.com/questions/8221787/perform-segue-on-viewdidload) – dirtydanee