在应用程序的第一次运行(例如教程)期间,如何才能使uiviewcontroller仅显示一次?
我正在创建一个iOS swift
应用程序,我想在用户第一次运行应用程序时显示教程屏幕。稍后,在应用程序的每次运行中,应该隐藏教程,并且应该将其他视图控制器作为起点。到目前为止,我的故事板是这样的:在应用程序的第一次运行(例如教程)期间,如何才能使uiviewcontroller仅显示一次?
它包含教程(第一和最后一个)和标签栏(这是我的应用程序的主窗口)的两个屏幕。
至于现在,在故事板我选择了选项卡栏为初始视图控制器:
有了这样的方法的指南屏幕是从未见过。如何在首次启动应用程序中仅显示一次,然后每次用户打开应用程序时都跳过它?
在didFinishLaunchingWithOptions
方法AppDelegate
检查NSUserDefaults
像这样的值。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.objectForKey("isFirstTime") == nil {
defaults.setObject("No", forKey:"isFirstTime")
defaults.synchronize()
let storyboard = UIStoryboard(name: "main", bundle: nil) //Write your storyboard name
let viewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
self.window.rootViewController = viewController
self.window.makeKeyAndVisible()
}
return true
}
注:我创建的ViewController
您需要创建您的第一页指南屏幕的对象之后,它分配给rootViewController
的对象。
嗯,我得到错误在这里:'let viewController = self.storyboard?'说'类型'AppDeleage'的值没有成员'storyboard' – user3766930
检查编辑答案。 –
谢谢@NDoc,它的功能就像一个魅力! – user3766930
对于swift 4进行这些更改。
let defaults = UserDefaults.standard
if defaults.object(forKey: "isFirstTime") == nil {
defaults.set("No", forKey:"isFirstTime")
defaults.synchronize()
...
}
好的,谢谢你的建议!但是,如何根据布尔标志决定是否显示屏幕?我应该从哪个地方做? – user3766930
您可以检入您的应用程序委托,然后在那里设置根视图控制器。 –
@ChrisSlowik你能告诉我一个我可以使用的代码的例子吗?我试图使用:'让vc:AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier(“tutorialFirst”) self.showViewController(vc as!UIViewController,sender:vc)'但是屏幕并没有改变我 – user3766930