在故事板中使用NSUserDefaults创建初始/第一个引导视图控制器

时间:2013-02-08 13:49:28

标签: iphone ios objective-c storyboard

因此,如果找到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");
}

2 个答案:

答案 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”框(该框可用于模态转换,我认为不适合推送)。