- This topic has 3개 답변, 3명 참여, and was last updated 4 years, 7 months 전에 by 멍단비.
-
글쓴이글
-
-
쥬트참가자
- 글작성 : 9
- 답글작성 : 8
네비게이션 컨트롤을 뷰컨트롤러에 임베드할 때 스토리보드로 굉장히 간단하게 구현이 가능합니다만,
따로 스토리보드로 생성하지 않고 뷰컨을 임베드하는 방법이 궁금합니다 !
여러 자료를 찾아보면서 알아본 결과는 AppDelegate에
class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. // 루트 뷰 컨트롤러가 될 뷰 컨트롤러를 생성 let rootViewController = ViewController(nibName: nil, bundle: nil) // 위에서 생성한 뷰 컨트롤러로 내비게이션 컨트롤러를 생성 let navigationController = UINavigationController(rootViewController: rootViewController) self.window = UIWindow(frame: UIScreen.main.bounds) // 윈도우의 루트 뷰 컨트롤러로 내비게이션 컨트롤러를 설정 self.window?.rootViewController = navigationController self.window?.makeKeyAndVisible() return true } ... }
이러한 코드를 추가해주면 된다는데 잘 안됩니다 ㅠ 문제점이 무엇인지 궁금합니다 !!
2020-04-23 오후 5:05 #7093 -
멍단비참가자
- 글작성 : 10
- 답글작성 : 98
Xcode버전이 최신이면 자동적으로 SceneDelegate가 생성되서 안되실거에요.
iOS13부터는 SceneDelegate라는 녀석이 생겼고, AppDelegate가 하던 일을 일부 SceneDelegate가 가져왔어요.
위에 적으신 코드를 SceneDelegate로 옮기시면 잘 동작은 하겠지만, iOS13미만의 버전을 앱의 타겟으로 잡고 실행하면 iOS13이상의 소프트웨어가 있는 기기에서는 잘동작하겠지만,
그렇지 않은 경우에는 앱이 동작하지 않고 검은 화면만 보이실거에요.(윈도우가 없으니까요)위에서 말씀드린대로 SceneDelegate는 iOS13부터 생긴녀석이에요. 따라서, 13미만에서는 어떠어떻게 동작하도록 처리를 따로 해주셔야해요.
만약에 아래와 같은 조건을 충족한다면 위에 적으신것처럼 AppDelegate만 사용하고 SceneDelegate는 지워버리면 되겠지만,
그렇지 않은 경우라면 따로 미래를 생각해서 호환성을 위해 분기처리는 해주시는게 좋습니다~ AppDelegate와 SceneDelegate의 차이는 검색하면 글이 엄청나게 많으니 한 번 보셔요~1)절대로 아이패드는 지원하지 않을것이고(멀티윈도우를 구현하지 않을거고)
2)iOS13이상의 버전만 지원할것이다.(통상적으로는 11?10?부터 지원해서 현실적이진 않아요)2020-05-03 오전 2:24 #7490
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.