因此,如果找到NSUserDefaults键,我试图跳过我的第一个viewcontroller。但它不起作用。为此使用Segue是否明智?我是故事新手。
警告:尝试显示其视图不在窗口层次结构中!
我在第一个VC的viewDidLoad中使用此代码:
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
NSLog(@"not first launch");
[self performSegueWithIdentifier:@"SegueToNewTrackTraceVC" sender:self];
}else{
NSLog(@"First launch");
}
NSLog(@"initialViewController loaded");
}
答案 0 :(得分:0)
您忘记在首次启动后更新NSUserDefault
。
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
NSLog(@"not first launch");
[self performSegueWithIdentifier:@"SegueToNewTrackTraceVC" sender:self];
}
else
{
NSLog(@"First launch");
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
}
答案 1 :(得分:0)
您无法从viewDidLoad执行segue,因为该代码所在的类的控制器即将自动呈现,并且其视图尚未添加到窗口层次结构中。您应该将代码放在viewDidAppearAnimated:中。如果你不想看到segue正在发生,那么取消选中故事板中segue的“Animates”框(该框可用于模态转换,我认为不适合推送)。