2016-10-30 2 views
0

UINavigationController에 내 로그인 화면이 포함되고 내 홈 페이지 화면이 UITabBarController에 삽입되어 있습니다.사용자가 로그인되어 있고 로그인 화면으로 리디렉션되지 않았는지 확인하는 방법

내 로그인 페이지가 프로그래밍 방식으로 완료되었으며 TabBarController이 (가) storyboards을 사용하여 생성되었습니다. AppDelegate.swift 파일에서 로그인 화면을 rootViewController으로 만들었습니다.

는하지만 지금은 사용자가 로그인되어 있는지 확인하고 TabBarControllerrootViewController을 만들고 싶어하고, 사용자가 로그인하지 않은 경우, 로그인 화면으로 리디렉션 다음 TabBarController에 SEGUE하고 그것을 rootViewController합니다.

서버는 토큰을 클라이언트에 전송하여 사용자를 인증합니다. NSUserDefaults을 사용하여 토큰을 저장합니까? 사용자가 로그인 한 경우 유효성을 검사하는 방법으로 사용자에게 _token _이 있는지 확인해야합니까?

+0

사용자가 로그인했는지 확인하는 데 일반적으로 사용되는 방법입니다. 웹 개발에서 쿠키가 사용 된 것과 같습니다. – Adeel

+0

@Adeel 모든 UIVewController 클래스의 viewWillAppear 및 앱을 처음 호출 할 때 AppDelegate에서 체크를 수행합니까? – user3497437

+0

아니요, _viewWillAppear_에 실제로는 뷰 컨트롤러에 없습니다. _AppDelegate_의 _didFinishLanchingWithOption_ 메소드에서 토큰을 확인해야합니다. – Adeel

답변

2

프로그래밍 방식으로 LoginViewController을 작성하므로 TabBarControllerstoryboardrootViewController이 기본값이라고 가정합니다. 귀하의 AppDelegate에서해야 할 일은 바로 이것입니다.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    let token = UserDefaults.standard.object(forKey: "token") 
    if token == nil { 
     //*************** 
     //Create your LoginViewController and make it the rootViewController 
     //*************** 
    } 
    return true 
} 

참고 : 구문에 약간의 차이가 있으므로 Swift 3을 사용하고 있습니다.

+0

사용자가 로그인 화면에서 서명 한 경우에도 로그인 화면 컨트롤러를 닫고 rootview 컨트롤러로 tabcontroller를 초기화해야합니다. – user3497437

+0

네가 맞습니다. 'TabBarController'를 인스턴스화하고 응용 프로그램의 키 윈도우의'rootViewController'로 설정하면됩니다. 그리고,'TabBarController'를 다른'ViewController'에 푸시/제시하지 마십시오. – Adeel

+0

감사합니다. 그래서 탐색 컨트롤러를 닫고 탭 컨트롤러에 rootviewcontroller를 설정합니다. – user3497437

관련 문제