2016-09-06 4 views
3

Я создаю приложение iOS swift, и я хочу показать экран учебника, когда пользователь запускает приложение в первый раз. Позже, при каждом запуске приложения учебник должен быть скрытым, а другой диспетчер представлений должен быть видимым в качестве отправной точки. До сих пор моя раскадровки выглядит следующим образом:Как я могу сделать uiviewcontroller видимым только один раз во время первого запуска приложения (например, учебника)?

enter image description here

Он содержит два экраны учебника (1-й и последний) и панель вкладок (который является главным окном моего приложения).

На данный момент, в раскадровке я выбрал панель вкладок, чтобы быть первоначальный вид контроллера:

enter image description here

И с этим подходом экран учебник никогда не видел. Как я могу показать его только один раз при первом запуске приложения, а затем пропустить его каждый раз, когда пользователь открывает приложение?

+0

ОК, спасибо за предложение! Но как я могу решить, показывать экран или нет на основе флага bool? С какого места я должен это делать? – user3766930

+1

Вы можете проверить свой делегат приложения, а затем установить там корневой контроллер. –

+0

@ChrisSlowik вы можете показать мне пример кода, который я мог бы использовать? Я попытался использовать: 'let vc: AnyObject! = self.storyboard! .instantiateViewControllerWithIdentifier ("tutorialFirst") self.showViewController (vc as! UIViewController, sender: vc) ', но экран не изменился для меня – user3766930

ответ

7

В 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 вам нужно создать объект вашего экрана FirstPage учебник после этого назначить его на rootViewController.

+0

Хм, здесь я получаю ошибку:' let viewController = self.storyboard? ', в котором говорится:« Значение типа «AppDeleage» не имеет раскадровки участника » – user3766930

+0

Проверьте отредактированный ответ. –

+0

Спасибо @NDoc, он работает как шарм! – user3766930

1

Для быстрых 4 внесите эти изменения.

let defaults = UserDefaults.standard 
if defaults.object(forKey: "isFirstTime") == nil { 
    defaults.set("No", forKey:"isFirstTime") 
    defaults.synchronize() 
    ... 
} 
Смежные вопросы