2016-06-20 3 views
1

У меня есть класс в моем SignInViewController.swift:Как передать значения из отдельных классов в AppDelegate?

class CredentialState: NSObject { 
    static let sharedInstance = CredentialState() 
    var signedIn = false 
    var displayName: String? 
    var photoUrl: NSURL? 
} 

Я хотел бы использовать переменный signedIn для аутентификации пользователей в AppDelegate с if-другим заявлением. В настоящее время у меня есть способ настроить viewcontroller на CustomTabBarController (пользовательский программно сделанный) или SignInViewController (раскадровка). Оператор if в основном говорит, что если значение ложно, установите контроллер на экран знака и, если он прав, перейдите на экран панели вкладок.

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

    // Override point for customization after application launch. 
    window = UIWindow(frame: UIScreen.mainScreen().bounds) 
    window?.makeKeyAndVisible() 

    // Main view controller is inside of customtabbarcontroller, which gives a tab overlay 
//  window?.rootViewController = CustomTabBarController() 

    // Sets the main view to a storyboard element, such as SignInVC 
    let storyboard = UIStoryboard(name: "SignIn", bundle: nil) 
    let loginVC = storyboard.instantiateViewControllerWithIdentifier("SignInVC") as! SignInViewController 
    self.window?.rootViewController = loginVC 

    return true 
} 

ответ

1

, если я вас правильно понял:

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

    // Override point for customization after application launch. 
    window = UIWindow(frame: UIScreen.mainScreen().bounds) 

    // check login state 
    if CredentialState.sharedInstance.signedIn { 
     // Main view controller is inside of customtabbarcontroller, which gives a tab overlay 
     window?.rootViewController = CustomTabBarController() 
    } else { 
     // Sets the main view to a storyboard element, such as SignInVC 
     let storyboard = UIStoryboard(name: "SignIn", bundle: nil) 
     let loginVC = storyboard.instantiateViewControllerWithIdentifier("SignInVC") as! SignInViewController 
     window?.rootViewController = loginVC 
    } 

    window?.makeKeyAndVisible() 
    return true 
} 
+0

Это работало отлично. Благодаря! – About7Deaths

+0

добро пожаловать. Рад, что смог помочь :) –

1

Я не уверен, что вы просите, но я попытаюсь ответить на этот вопрос. В основном то, что вам нужно сделать, это просто этот кусок кода выше вашего класса CredentialState:

credentialState : CredentialState = CredentialState() 

В этом случае вы можете изменить или проверить переменную signedIn из AppDelegate. Так просто в AppDelegate файл вы можете:

if(credentialState.signedIn == true) ... 

Надеюсь, что я был в состоянии ответить на ваш вопрос