반응형
구글 로그인을 구현하다가 로그아웃을 하지 않으면 메인 페이지로, 로그인이 되어있지 않은 상태면 로그인 페이지로 가도록 구현하는데 고민을 했습니다.
다음 포스팅을 참조해서 SceneDelegate의 scene에 구현하니 작동이 잘 되었습니다.
[iOS] StoryBoard를 쓰지 않고 코드로 작성하기
아래 구현은 google 로그인을 조건으로 작성한 코드이고 이를 응용하면 상황에 따른 시작 지점을 변경해줄 수 있을듯 합니다.
// SceneDelegate class
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// 새로 작성해준 코드
// ---------------------------------------------------------------------------------------------------
// 스토리보드를 가져옴
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// 구글 로그인 체크 (구글 문서에서 가져온 코드)
GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
guard let windowScene = (scene as? UIWindowScene) else { return }
self.window = UIWindow(windowScene: windowScene)
if error != nil || user == nil {
// Show the app's signed-out state.
print("로그인 실패")
// 로그인이 되어있지 않으면 로그인 뷰 컨트롤러로 이동
guard let vcName = storyboard.instantiateViewController(withIdentifier: "LoginViewController") as? UINavigationController else {return}
self.window?.rootViewController = vcName
self.window?.makeKeyAndVisible()
} else {
// Show the app's signed-in state.
print("로그인")
// 로그인이 되어있으면 메인페이지로 구성해둔 tapBarController로 전환.
guard let vcName = storyboard.instantiateViewController(withIdentifier: "LoginTapBarController") as? UITabBarController else {return}
self.window?.rootViewController = vcName
self.window?.makeKeyAndVisible()
}
}
// ---------------------------------------------------------------------------------------------------
guard let _ = (scene as? UIWindowScene) else { return }
}
반응형
'iOS > UIKit' 카테고리의 다른 글
[iOS] TableView, CollectionView refresh 하기 (새로고침) (0) | 2022.03.26 |
---|---|
[iOS] TableView 스크롤위치 변경(하단으로 스크롤) (0) | 2022.03.02 |
[iOS] Label에 Padding 주기(StoryBoard), Label에 cornerRadius 주기 (0) | 2022.03.02 |
[iOS] Transform을 이용해 KeyBoard 이벤트 처리 (0) | 2022.03.02 |
[iOS] collectionView 헤더(Header) 커스텀 및 사용 (0) | 2022.02.22 |