TIL: 기존 프로젝트에 로그인 화면 추가하기
오늘은 기존 프로젝트에 첫 화면을 로그인 화면으로 바꾸는 방법을 배웠뜨아
기존에 이미 많이 만들어 놓은 프로젝트에서
첫 화면을 로그인 화면으로 바꾸는 과정에서 겪을 수 있는 문제와 그 해결 방법을 정리해봅시다~!
+) 추가!!!
첫 화면을 로그인 화면으로 지정하려고 아래와 같은 과정을 거쳤으나
1. 로그인 하지 않아도 이 앱을 사용할 수 있었으면 좋겠음
2. root 화면을 로그인 화면으로 하는 것은 비효율적!
위 두가지 이유로 다시 원래의 홈 화면을 첫 화면으로 지정함
그래도 써놓은 것은 아까우니 ㅎ 포스팅!
1. SceneDelegate에서 첫 화면 설정
iOS 13 이후부터는 SceneDelegate에서 첫 화면을 설정함
그래서 SceneDelegate 파일을 수정해서 첫 화면을 로그인 화면으로 띄워야 함!
1-1. SceneDelegate.swift 수정
SceneDelegate.swift에서 첫 화면을 설정하려면 scene(_:willConnectTo:options:) 메소드 안에 코드를 추가해야 함!
기존의 window?.rootViewController를 로그인 화면으로 바꿈
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
// 스토리보드에서 LoginViewController를 가져옴
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// LoginViewController를 안전하게 가져옴
if let loginVC = storyboard.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController {
window?.rootViewController = loginVC
window?.makeKeyAndVisible()
}
}
}
- UIStoryboard(name: "Main", bundle: nil)로 Main.storyboard에서 화면을 가져옴
- instantiateViewController(withIdentifier:)로 로그인 화면을 로드.
- window?.rootViewController로 로그인 화면을 첫 화면으로 설정.
이거 그냥 외우면 될 것 같지만 이해가 잘안돼서 한 번 정리하고 넘어가겠음!
UIStoryboard(name: "Main", bundle: nil)는 Main.storyboard 파일을 코드로 불러오는 방법임
"Main"은 스토리보드 파일 이름이고, bundle: nil은 기본 리소스에서 파일을 찾겠다는 의미임.
이 후, instantiateViewController(withIdentifier:)로 스토리보드 안의 화면을 코드에서 가져와 사용할 수 있음
Storyboard ID는 스토리보드에서 각 화면을 구분할 수 있도록 설정하는 식별자임
2. 스토리보드에서 LoginViewController 설정
SceneDelegate에서 로그인 화면을 제대로 가져오기 위해선 Storyboard ID를 설정해야 함
Main.storyboard에서 LoginViewController를 선택하고 Identity Inspector에서 Storyboard ID를 "LoginViewController"로 설정
이렇게 하면 SceneDelegate에서 이 ID로 로그인 화면을 가져올 수 있음
위에서 instantiateViewController로 가져올 수 있겠쥬?
3. 문제 해결
처음에 instantiateViewController(withIdentifier:) 호출할 때 nil 오류가 났었음 ㅠ
원인은 Storyboard ID가 잘못되거나 설정이 안 되어 있어서 그랬던 것~
그래서 스토리보드에서 Storyboard ID를 확인하고 수정한 후, 정상적으로 동작하는 걸 확인함
4. 결론
이 방법으로 기존 앱에 로그인 화면을 첫 화면으로 쉽게 추가할 수 있었음
SceneDelegate에서 첫 화면을 설정하고, Storyboard ID를 잘 설정하는 게 핵심!
다음엔 로그인 후 홈 화면으로 넘어가는 기능도 추가할 예정임
원래의 홈 화면으로 넘어갈 때 잘 되려나... ㅠ 걱정~
'TIL' 카테고리의 다른 글
250329 TIL | XCode Dark / Light Mode | 벡터 이미지 | URL 구조 (0) | 2025.03.29 |
---|---|
250328 TIL | 기초부터 탄탄히! (0) | 2025.03.28 |
250308 TIL (0) | 2025.03.10 |
250211 TIL | Swift ImageLiteral | 아이폰 사용 이미지는 2x로 (0) | 2025.02.12 |
241130 열공 썰 풀게요 | 클로저 실행 형태, 딕셔너리, HTTP 프로토콜 (2) | 2024.11.30 |