Ios 根据条件设置rootViewController
我目前正在使用Swift开发Xcode 7.2和iOS 9.2中的一个应用程序。我想在用户第一次打开应用程序时弹出一个屏幕,获取一些数据并永久存储。我发现了一条线索,有人问了类似的问题:我严格遵循了说明,但我似乎无法让它按我希望的方式工作 以下是我的AppDelegate.swift文件中的修改代码Ios 根据条件设置rootViewController,ios,swift,Ios,Swift,我目前正在使用Swift开发Xcode 7.2和iOS 9.2中的一个应用程序。我想在用户第一次打开应用程序时弹出一个屏幕,获取一些数据并永久存储。我发现了一条线索,有人问了类似的问题:我严格遵循了说明,但我似乎无法让它按我希望的方式工作 以下是我的AppDelegate.swift文件中的修改代码 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
self.window = UIWindow(frame: UIScreen.mainScreen().bounds);
let storyboard = UIStoryboard(name: "Main", bundle: nil);
var initialViewController: UIViewController;
print(NSUserDefaults.standardUserDefaults().boolForKey("firstTime"));
if(!NSUserDefaults.standardUserDefaults().boolForKey("firstTime")){
initialViewController = storyboard.instantiateViewControllerWithIdentifier("FirstTimeScreen");
} else {
initialViewController = storyboard.instantiateViewControllerWithIdentifier("Dashboard");
}
self.window?.rootViewController = initialViewController;
self.window?.makeKeyAndVisible();
return true
}
在ViewController.swift文件中,对应于从第二次开始应打开的ViewController,在viewDidLoad()方法中,我有以下代码行:
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "firstTime");
当前,第一个屏幕始终处于打开状态。即使测试了NSUserDefaults值,从第二次开始应显示的屏幕也不是根视图控制器
我在一个视图控制器上启动应用程序,目前没有任何导航控制器或任何东西。只是一堆单独的视图控制器,通过按钮连接
感谢您花时间阅读本文并尽可能回答问题 仔细查看您的逻辑,这里有一个
,这意味着如果firstTime
不为true,它将显示带有标识符FirstTimeScreen
的视图控制器。您将要删除!,这样,它将在第一次启动时显示FirstTimeScreen
确保将firstTime
的false
存储在FirstTimeScreen
中,而不是Dashboard
另外,请确保您将NSUserDefaults注册为firstTime
设置为true
,否则它将为false
,并且永远不会显示您的FirstTimeScreen
您需要将“firstTime”设置为true,而不是false:
NSUserDefaults.standardUserDefaults()代码>
另外,请确保在此之后使用NSUserDefaults.standardUserDefaults().synchronize()
保存更改。尝试在DidFinishLaunchwithOptions中设置firstTime
if(NSUserDefaults.standardUserDefaults().objectForKey("firstTime") == nil){
initialViewController = storyboard.instantiateViewControllerWithIdentifier("FirstTimeScreen");
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstTime");
NSUserDefaults.standardUserDefaults().synchronize()
} else {
initialViewController = storyboard.instantiateViewControllerWithIdentifier("Dashboard");
}
@Morgoth你有没有试过作为我编辑过的答案的objectForKey
,是的,我正准备用这个代码发布一个答案。谢谢你的帮助。