2016-07-26 14 views
0

Ich arbeite daran, eine Begrüßungsseite zu erstellen, wenn App in der ersten Zeit läuft. Eigentlich habe ich schon alles von dieser App UI fertig, aber alles basiert auf Storyboard. (So, 'Spaß-Anwendung' war leer in AppDelegate.swift)iOS Machen Sie eine Begrüßungsseite vor dem Haupt StoryBoard in swift

Nun, ich entworfen habe eine Begrüßungsseite basierend auf Code "welcomeController()"

Und fügte ich in AppDelegate folgenden Code -> Spaß-Anwendung prüfen, ob

window = UIWindow(frame: ScreenBounds) 
    window!.makeKeyAndVisible() 

    let isFristOpen = NSUserDefaults.standardUserDefaults().objectForKey("isFristOpenApp") 

    if isFristOpen == nil { 
     window?.rootViewController = welcomeController() 
     NSUserDefaults.standardUserDefaults().setObject("isFristOpenApp", forKey: "isFristOpenApp") 
    }else { 
     window!.rootViewController = MainTabBarController() 
    } 

Begrüßungsseite funktioniert gut, aber MainTabBarController() lunching gerade gezeigten Zuschnitt (wurde im Storyboard identifiziert). Und wenn ich auf die fertige Schaltfläche klicke ("window! .rootViewController = MainTabBarController()" in der Benachrichtigungszentrale) auf der letzten Seite der Begrüßungsseite anruft, wird sie (natürlich) auch leer angezeigt.

Also, wie konnte ich eine solche Anforderung erreicht? Vielleicht das gleiche Denken in Login?

Antwort

0

Ich würde es auf diese Weise tun:

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

    // show Welcome View 

    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let welcomeController = mainStoryboard.instantiateViewControllerWithIdentifier("welcomeController") as! WelcomeController 
    self.window?.rootViewController = welcomeController 

    // Override point for customization after application launch. 
    return true 
} 

Dies wird die "welcome View" zeigen, wenn die App

und verwenden Sie diese in der WelcomeView die MainTabBar

func showMainTab() { 
    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let tabBarController = mainStoryboard.instantiateViewControllerWithIdentifier("tabBarController") as! MainTabBarController 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    appDelegate.window?.rootViewController = tabBarController 
} 
zu laden gestartet werden
1

Versuchen Sie, Ihren Begrüßungsbildschirm nicht von AppDelegate, sondern von Ihrem ursprünglichen ViewController zu instanziieren.

In Ihrem ursprünglichen ViewController in viewDidLoad() fügen Sie die Überprüfung für isFristOpenApp mit NSUserDefaults hinzu, und wenn es zum ersten Mal App für Benutzer exponiert ist, rufen Sie Instanziierung von Storyboard mit Storyboard-Kennung. Wie folgt aus:

override func viewDidLoad() { 

let userDefaults = NSUserDefaults.standardUserDefaults() 

let isFristOpen = userDefaults.boolForKey("isFristOpenApp") 

     if isFristOpen == true { 
      if let welcomeController = storyboard?.instantiateViewControllerWithIdentifier("WelcomeController") as? WelcomeController { 

       self.presentViewController(welcomeController , animated: true, completion: nil) 
      } 

     } 
} 

Und irgendwo in Ihrem welcomeController Sie isFirstOpen auf false gesetzt werden:

let userDefaults = NSUserDefaults.standardUserDefaults() 
userDefaults.setBool(false, forKey: "isFristOpenApp")