iOSアプリケーションを実行すると黒い画面が表示される


12

Xcodeで新しいiOSアプリを作成しようとしています。メインのストーリーボードを作成し、ViewControllerにラベルを追加しました。アプリケーションを実行すると、最初にラベルが表示され、エラーなしで画面が真っ黒になります。

私はXcode 11(Swift 5)で作業しており、次のメッセージが出力に表示されます。

[SceneConfiguration] Info.plist構成のUI​​WindowSceneSessionRoleApplicationの「デフォルト構成」にUISceneDelegateClassNameキーが含まれていましたが、「gina.SceneDelegate」という名前のクラスをロードできませんでした

私の間違いがどこにあるのかわかりません。

実行中の黒い画面



私はあなたのプロジェクトからあなたSceneDelegateクラスを削除すると思う
ALFI

以下の回答の多くは、エラーの要点を逃しているようで、問題の正確なエラーに関連しない修正について説明しています。私の場合、SceneDelegateターゲットにを追加することを忘れて、ボックスをチェックして修正しました。
ウェイン

回答:


32

iOS 13

ターゲットが13以上の場合のみ。

SceneDelegateiOS 13以前はサポートされていません。iOS 13より前のiOSを使用SceneDelegateしたい、またサポートしたい場合は、プロジェクトにいくつかの変更を加える必要があります。

  1. SceneDelegate.swiftファイルのクラス全体にavailability属性を追加します。
@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
   ...
}
  1. AppDelegate.swiftファイルには2つの新しいSceneDelegateメソッドがあります。それらにも可用性属性を追加します。
@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
  ...
}

@available(iOS 13.0, *)
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
  ...
}
  1. 最後に、AppDelegate.swiftUIWindowオブジェクトを追加します。
class AppDelegate: UIResponder, UIApplicationDelegate {

    //Add this line
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

    ...
}

iOS 12およびそれ以前

AppDelegateUIWindowプロパティが必要です。iOS 13SceneDelegate新しいプロジェクトで使用します。UIWindowオブジェクトを指定して、SceneDelegate.swiftファイルを削除します。

SceneDelegateプロジェクトからを削除した場合は、Info.plistからApplication Scene Manifest辞書を削除する必要があります

Info.plist


すばらしい、ありがとう
Mohammad Razipour

1

次のようにウィンドウを初期化する必要があります。

let window = UIWindow(windowScene: scene as! UIWindowScene)

これらをinfo.plistに追加します。

<key>UIApplicationSceneManifest</key>
    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <true/>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UILaunchStoryboardName</key>
                    <string>LaunchScreen</string>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                </dict>
            </array>
        </dict>
    </dict>

それがあなたがする必要があるすべてです。


同じ問題があり、接頭辞で問題が$(PRODUCT_MODULE_NAME).解決しました。
Sean Howell、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.