Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 根据条件设置rootViewController_Ios_Swift - Fatal编程技术网

Ios 根据条件设置rootViewController

Ios 根据条件设置rootViewController,ios,swift,Ios,Swift,我目前正在使用Swift开发Xcode 7.2和iOS 9.2中的一个应用程序。我想在用户第一次打开应用程序时弹出一个屏幕,获取一些数据并永久存储。我发现了一条线索,有人问了类似的问题:我严格遵循了说明,但我似乎无法让它按我希望的方式工作 以下是我的AppDelegate.swift文件中的修改代码 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject

我目前正在使用Swift开发Xcode 7.2和iOS 9.2中的一个应用程序。我想在用户第一次打开应用程序时弹出一个屏幕,获取一些数据并永久存储。我发现了一条线索,有人问了类似的问题:我严格遵循了说明,但我似乎无法让它按我希望的方式工作

以下是我的AppDelegate.swift文件中的修改代码

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
,是的,我正准备用这个代码发布一个答案。谢谢你的帮助。