0

因此,如果找到 NSUserDefaults 键,我会尝试跳过我的第一个视图控制器。但它不起作用。为此使用 Segue 是否明智?我是故事板的新手。

警告:尝试呈现不在窗口层次结构中的视图!

我在第一个 VC 的 viewDidLoad 中使用此代码:

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
    {

        NSLog(@"not first launch");
        [self performSegueWithIdentifier:@"SegueToNewTrackTraceVC" sender:self];


    }else{
        NSLog(@"First launch");
    }

    NSLog(@"initialViewController loaded");
}
4

2 回答 2

0

您不能从 viewDidLoad 执行 segue,因为该代码所在的类的控制器即将自己呈现,并且它的视图尚未添加到窗口层次结构中。您应该将代码放在 viewDidAppearAnimated: 中。如果您不想看到转场发生,请取消选中情节提要中转场的“动画”框(该框可用于模态转换,我认为它不是用于推动)。

于 2013-02-08T16:15:30.260 回答
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"];
}
于 2013-02-08T14:03:39.807 回答