หน้าจอสีดำเมื่อฉันเรียกใช้แอปพลิเคชัน iOS ของฉัน


12

ฉันกำลังพยายามทำแอพ iOS ใหม่ใน Xcode ฉันทำกระดานเรื่องราวหลักและฉันเพิ่มป้ายกำกับใน ViewController ของฉัน เมื่อฉันเรียกใช้แอปพลิเคชันของฉันอันดับแรกมันจะแสดงป้ายกำกับและจากนั้นกลายเป็นหน้าจอดำโดยไม่มีข้อผิดพลาดใด ๆ

ฉันกำลังทำงานกับ Xcode 11 (Swift 5) และข้อความนี้ปรากฏขึ้นที่เอาท์พุท:

[SceneConfiguration] การกำหนดค่า Info.plist "การกำหนดค่าเริ่มต้น" สำหรับ UIWindowSceneSessionRoleApplication มีคีย์ UISceneDelegateClassName แต่ไม่สามารถโหลดคลาสที่มีชื่อ "gina.SceneDelegate"

ฉันไม่รู้ว่าความผิดพลาดของฉันอยู่ที่ไหน

หน้าจอสีดำเมื่อทำงาน



ฉันคิดว่าคุณลบคลาส SceneDelegate ออกจากโครงการของคุณ
Alfi

คำตอบมากมายด้านล่างดูเหมือนจะพลาดจุดของข้อผิดพลาดและอธิบายการแก้ไขที่ไม่เกี่ยวข้องกับข้อผิดพลาดที่เป็นปัญหา ในกรณีของฉันฉันเพิ่งลืมเพิ่มSceneDelegateเป้าหมายของฉันและตรวจสอบกล่องแก้ไข
Wayne

คำตอบ:


32

iOS 13

เฉพาะในกรณีที่เป้าหมายเป็น 13 หรือมากกว่า

SceneDelegateไม่สนับสนุนก่อนที่iOS ของคุณ 13 หากคุณต้องการใช้SceneDelegateและต้องการสนับสนุนiOS ก่อน iOS 13คุณต้องเพิ่มการเปลี่ยนแปลงบางอย่างในโครงการของคุณ

  1. เพิ่มคุณสมบัติความพร้อมใช้งานให้กับคลาสทั้งหมดในไฟล์SceneDelegate.swift
@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
   ...
}
  1. ไฟล์AppDelegate.swiftมีสอง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. สุดท้ายเพิ่มUIWindowวัตถุในAppDelegate.swift
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 และก่อนหน้า

AppDelegateต้องการUIWindowคุณสมบัติ iOS 13ใช้SceneDelegateในโครงการใหม่ ระบุUIWindowวัตถุและลบไฟล์SceneDelegate.swift

ถ้าคุณได้ออกSceneDelegateจากโครงการแล้วคุณต้องเอาแอพลิเคชันฉาก ManifestพจนานุกรมจากInfo.plist

Info.plist


เยี่ยมมากขอบคุณ
โมฮัมหมัด 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.