메인 스토리보드 파일을 신속하게 사용하려면 앱 대리자가 창 속성을 구현해야 합니다.
방금 앱을 개발했는데 시뮬레이터에서 실행하면 디버거 콘솔에 다음과 같은 메시지가 표시됩니다.
메인 스토리보드 파일을 사용하려면 앱 대리자가 창 속성을 구현해야 합니다.
앱 위임 파일이 있습니다.메시지의 의미는 무엇이며 어떻게 하면 앱을 작동시킬 수 있습니까?
AppDelegate 클래스에 다음과 같은 속성 선언이 있는지 확인합니다.
var window: UIWindow?
iOS 13.0 이전 버전에서 프로젝트를 실행하면 문제가 발생합니다.iOS 13 이후 버전 때문에 앱이 이전 버전과 다르게 실행됩니다.
13을 사용합니다.
UISceneDelegate
씬(scene) 기반 앱에서 수명 주기 이벤트에 응답하는 개체버전에서는 12를 합니다.
UIApplicationDelegate
수명 주기 이벤트에 응답하는 개체입니다.
버전에서 12가 실행됩니다.UIApplicationMain
는 당신의 속성을 합니다.AppDelegate
같부은의와 같은 계급SceneDelegate
그래서 당신의 문제는 당신이 당신의 문제에 다음의 행을 추가하면 해결될 것입니다.AppDelegate
학생들
var window: UIWindow?
목표-C의 경우
@property (strong, nonatomic) UIWindow *window;
앱의 라이프 사이클에서 더 많은 정보를 찾을 수 있습니다.
만약 누군가가 이것을 다시 발견하고 오브젝티브-C에서 프로그래밍을 하고 있다면, 당신은 이 코드 라인을 가지고 있는지 확인해야 합니다.AppDelegate.h
파일 이름:
@property (strong, nonatomic) UIWindow *window;
XCode 11에서 새 프로젝트를 만들 때 이 오류가 발생했습니다.사용하지 않았습니다.SwiftUI
다음은 제가 이 문제를 해결하기 위해 고려한 단계입니다.
- 된 제됨
Application Scene Manifest
.Info.plist
- 된 제됨
SceneDelegate.swift
파일 - 의 모든 장면 관련 메서드를 삭제했습니다.
AppDelegate.swift
시간 - 된 가된
var window: UIWindow?
의AppDelegate.swift
시간
이러한 단계를 거치면 iOS 13 이전 버전에서 앱을 실행할 수 있습니다.
편집]
마지막으로, 당신의AppDelegate.swift
파일은 다음과 같이 보여야 합니다.
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
}
Appdelegate 파일에 다음 창 선언 추가
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window:UIWindow?
...
앱의 Info.plist 파일에 UIMainStoryboardFile 키가 포함된 경우 이 속성을 구현해야 합니다.이 합성된 속성의 기본값은 0입니다. 이로 인해 앱에서 일반 UIWindow 개체를 생성하여 속성에 할당합니다.앱에 사용자 지정 창을 제공하려면 이 속성의 getter 메서드를 구현하고 이 메서드를 사용하여 사용자 지정 창을 만들고 반환해야 합니다.
저도 같은 문제가 있었어요, 그냥 추가하세요.var window: UIWindow?
디버그 오류에서 알 수 있듯이.
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
앱 대리자 클래스를 확인할 수 있습니다.
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
// MARK: UISceneSession Lifecycle
@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
@available(iOS 13.0, *)
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}
}
오류: 메인 스토리보드 파일을 사용하려면 앱 대리자가 창 속성을 구현해야 합니다.
스위프트 5 & X 코드 11
반드시SceneDelegate
포함하다UIWindow
소유물
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
//...
}
Info.plist Application Scene Manifest > Enable Multiple Windows > false에서 설정합니다.이것으로 저는 문제를 해결했습니다.
오래 전에 대답했지만, 윈도우 속성을 추가하는 것만으로 문제가 해결되는 이유에 대한 위의 질문을 이해하는 데 도움이 되기 위해 앱 대리자가 다음을 준수한다는 점에 유의하십시오.UIApplicationDelegate
속성을 정의하는 프로토콜,@property (nullable, nonatomic, strong) UIWindow *window;
클래스가 지정하기 위해 제공해야 하는 것window to use when presenting a storyboard
이를 제공하지 않으면 Xcode 로그 경고가 발생합니다.
Swift의 경우:
var window: UIWindow?
목표-C:
@property (strong, nonatomic) UIWindow *window;
게다가, 당신은 아마도.Application Scene Manifest
에 입력Info.plist
파일 - 장면을 사용하지 않고 창과 보기 컨트롤러만 사용하는 경우(예: 이전 UI 설정에서 무언가를 테스트하려는 경우) 해당 항목을 제거하여 보기를 볼 수 있어야 합니다.
언급URL : https://stackoverflow.com/questions/29441682/the-app-delegate-must-implement-the-window-property-if-it-wants-to-use-a-main-st
'programing' 카테고리의 다른 글
R에서 문자열의 길이를 찾는 방법 (0) | 2023.05.29 |
---|---|
Heroku + node.js 오류(웹 프로세스가 시작 후 60초 이내에 $PORT에 바인딩하지 못함) (0) | 2023.05.29 |
핵심 데이터의 모든 항목을 삭제/재설정하시겠습니까? (0) | 2023.05.29 |
선택한 모든 빈 셀을 텍스트로 채우는 방법을 Excel (0) | 2023.05.29 |
ListBox 항목에 대한 WPF 데이터 템플릿 변경(선택한 경우) (0) | 2023.05.29 |