如何避免在swift中打开viewcontroller?

时间:2014-11-06 23:58:57

标签: ios swift

我正在使用Swift为iOS开发应用程序。我有两个视图控制器;第一个配置应用程序(它必须仅在第一次启动应用程序时出现),第二个视图控制器将登录到应用程序。

问题是:我想在第一次启动时显示“配置控制器”,之后必须出现“登录控制器”,但我不知道该怎么做。我试图将一个条件放入“配置控制器”以强制第二个(登录)使其工作。但它不起作用。

你能解释一下这个话题吗?

2 个答案:

答案 0 :(得分:1)

您可以使用这段代码来设置您希望成为第一个在AppDelegate.h启动时显示的视图控制器的视图控制器。只需记住在Main.storyboard中编辑视图控制器的Storyboard ID并相应地调整字符串

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    let storyboard = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle())
    let defaults = NSUserDefaults.standardUserDefaults()

    var rootViewController : UIViewController;

    if (defaults.boolForKey("HasBeenLaunched")) {
        // This gets executed if the app has ALREADY been launched
        rootViewController = storyboard.instantiateViewControllerWithIdentifier(/*storyboard id of your login controller*/) as UIViewController
    } else {
        // This gets executed if the app has NEVER been launched
        defaults.setBool(true, forKey: "HasBeenLaunched")
        defaults.synchronize()

        rootViewController = storyboard.instantiateViewControllerWithIdentifier(/*storyboard id of your configuration controller*/) as UIViewController
    }

    self.window?.rootViewController = rootViewController;
    self.window?.makeKeyAndVisible();

    return true
}

一旦应用程序完成启动并且即将显示其初始视图控制器,就会调用此函数。为了更好地理解if检查的内容,请查看NSUserDefaults的文档(它是一个非常有用的类)。返回之前的最后两个语句基本上是显示在if中选择的视图控制器。

希望这会有所帮助。

答案 1 :(得分:0)

您可以使用NSUserDefaults或其他内容来保存您的配置,或者只保存您的应用已经配置的事实,并且在didFinishLaunchingWithOptions中的appDelegate中,如果要加载您想要的控制器,则执行简单操作。但我的解决方案并没有使用故事板。