在应用程序的第一次运行(例如教程)期间,如何才能使uiviewcontroller仅显示一次?

在应用程序的第一次运行(例如教程)期间,如何才能使uiviewcontroller仅显示一次?

问题描述:

我正在创建一个iOS swift应用程序,我想在用户第一次运行应用程序时显示教程屏幕。稍后,在应用程序的每次运行中,应该隐藏教程,并且应该将其他视图控制器作为起点。到目前为止,我的故事板是这样的:在应用程序的第一次运行(例如教程)期间,如何才能使uiviewcontroller仅显示一次?

enter image description here

它包含教程(第一和最后一个)和标签栏(这是我的应用程序的主窗口)的两个屏幕。

至于现在,在故事板我选择了选项卡栏为初始视图控制器:

enter image description here

有了这样的方法的指南屏幕是从未见过。如何在首次启动应用程序中仅显示一次,然后每次用户打开应用程序时都跳过它?

+0

好的,谢谢你的建议!但是,如何根据布尔标志决定是否显示屏幕?我应该从哪个地方做? – user3766930

+1

您可以检入您的应用程序委托,然后在那里设置根视图控制器。 –

+0

@ChrisSlowik你能告诉我一个我可以使用的代码的例子吗?我试图使用:'让vc:AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier(“tutorialFirst”) self.showViewController(vc as!UIViewController,sender:vc)'但是屏幕并没有改变我 – user3766930

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的对象。

+0

嗯,我得到错误在这里:'let viewController = self.storyboard?'说'类型'AppDeleage'的值没有成员'storyboard' – user3766930

+0

检查编辑答案。 –

+0

谢谢@NDoc,它的功能就像一个魅力! – user3766930

对于swift 4进行这些更改。

let defaults = UserDefaults.standard 
if defaults.object(forKey: "isFirstTime") == nil { 
    defaults.set("No", forKey:"isFirstTime") 
    defaults.synchronize() 
    ... 
}