在启动时更改View Controller

时间:2014-03-31 10:33:39

标签: ios objective-c uiviewcontroller xcode5

当我的应用程序第一次启动时,我希望它被定向到SettingsViewController,从下次启动,我希望它被定向到MainViewController

我没有使用XIB文件,我使用的是故事板XCODE 5.1和iOS7。

我怎么能实现这个目标?

3 个答案:

答案 0 :(得分:1)

其他建议可行并且可能是正确的,但是当我过去这样做的时候,当应用程序第一次打开并且你得到一个即时推送动画时,它看起来很乱。

你可以做的是在你的AppDelegate中切换你的根视图控制器,这样用户在第一次启动时就看不到任何导航,你的设置会显示,当他们完成设置时,会对你的主视图控制器执行模态segue

对我来说它看起来更好。像这样:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if ( ![[NSUserDefaults standardUserDefaults] boolForKey:@"SettingsShown"] )
    {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SettingsShown"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];
    }

    return YES;
}

故事板设置:

enter image description here

答案 1 :(得分:0)

这不是问题,您应该在appDelegate didFinishLaunchingWithOptions中执行此操作, 当你第一次准备ForSegue到你的设置然后你在任何你想要的地方存储一个值(文件,NSUserDefaults)时要记住你已经在同一个appDelegate上添加了一个if来检查这个值。

此方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

使用此设置:

[[NSUserDefaults standardUserDefaults] setObject:variable forKey:@"variable"];
[[NSUserDefaults standardUserDefaults] synchronize];

然后这样得到:

[[NSUserDefaults standardUserDefaults] stringForKey:@"yourVariable"]

工作完成。

答案 2 :(得分:0)

故事板中的入口点应该是MainViewController中的ViewDidLoad,它会检查设置是否缺失,它会PerformSegue到settingsViewController。

同样最好为用户提供通过按钮或其他内容返回设置的选项。