728x90
저는 스토리보드를 별로 좋아하지 않아서 신규프로젝트를 할때 무조건 스토리보드를 날리고 시작하는데요.
이전에는 AppDelegate 부분에서만 작업을 해주면 되었지만 SceneDelegate 가 나오면서 추가적으로 처리를 해줘야하는 부분이 생겼습니다.
일단 기존처럼 시원하게 Main.storyboard 파일을 지워버립시다.
그리고 Info.plist 부분에서 Application Scene Manifest -> Scene Configuration -> Application Session Role 에서 Storyboard name 을 삭제해줍시다.
이번엔 AppDelegate.swift 부분으로 가볼까요?
예전과는 달리 window 가 없습니다만, 걱정하실 거 없습니다. 추가해주시면 됩니다.
iOS 13 이상일 경우 AppDelegate 와 SceneDelegate 가 모두 호출되기 때문에, 여기서 13 이상 버전의 메인 루트뷰컨트롤러를 생성하게 되면 중복이 발생하므로, 이부분에 대한 분기처리를 해줍시다. 13 이상에서 루트뷰는 SceneDelegate 에서 해주면 되니 여기서는 아무것도 하지 않습니다.
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if #available(iOS 13, *) {
} else {
window = UIWindow()
let rootVc = MainViewController()
window?.rootViewController = rootVc
window?.makeKeyAndVisible()
}
return true
}
// MARK: UISceneSession Lifecycle
@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
@available(iOS 13.0, *)
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
}
}
이제 마지막으로 SceneDelegate.swift 로 이동해서, window의 크기를 scene 만큼으로 설정해주고 동일하게 rootViewController 를 설정해주면 됩니다.
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
@available(iOS 13.0, *)
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let scene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: scene)
let rootVc = MainViewController()
window?.rootViewController = rootVc
window?.makeKeyAndVisible()
}
}
참 쉽죠?
이제부터 신나게 프로젝트를 만들어나가시면 되겠습니다.
그럼 다음 시간에 만나요
안녕~~~~
'Swift 개발 이야기' 카테고리의 다른 글
예제로 살펴보는 MVI Design Pattern with RxSwift (2) | 2020.04.08 |
---|---|
예제로 살펴보는 MVVM Design Pattern with RxSwift (0) | 2020.04.07 |
Insertion Sort Swift (0) | 2020.03.24 |
Swift 로 알아보는 객체지향 프로그래밍 - 2 (0) | 2020.02.19 |
Swift 로 알아보는 객체지향 프로그래밍 - 1 (0) | 2020.02.07 |