我正在使用Swift为iOS开发应用程序。我有两个视图控制器;第一个配置应用程序(它必须仅在第一次启动应用程序时出现),第二个视图控制器将登录到应用程序。
问题是:我想在第一次启动时显示“配置控制器”,之后必须出现“登录控制器”,但我不知道该怎么做。我试图将一个条件放入“配置控制器”以强制第二个(登录)使其工作。但它不起作用。
你能解释一下这个话题吗?
答案 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中,如果要加载您想要的控制器,则执行简单操作。但我的解决方案并没有使用故事板。