当我的应用程序第一次启动时,我希望它被定向到SettingsViewController,从下次启动,我希望它被定向到MainViewController
我没有使用XIB文件,我使用的是故事板XCODE 5.1和iOS7。
我怎么能实现这个目标?
答案 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;
}
故事板设置:
答案 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。
同样最好为用户提供通过按钮或其他内容返回设置的选项。