काली स्क्रीन जब मैं अपना iOS एप्लिकेशन चलाता हूं


12

मैं Xcode में एक नया iOS ऐप करने की कोशिश कर रहा हूं। मैंने एक मुख्य स्टोरीबोर्ड बनाया और मैंने अपने ViewController पर एक लेबल जोड़ा। जब मैं अपना एप्लिकेशन चलाता हूं, तो पहले यह लेबल दिखाता है और फिर बिना किसी त्रुटि के स्क्रीन ब्लैक हो जाता है।

मैं Xcode 11 (स्विफ्ट 5) पर काम कर रहा हूं और यह संदेश आउटपुट पर दिखाई देता है:

[SceneConfiguration] Info.plist कॉन्फ़िगरेशन "डिफ़ॉल्ट कॉन्फ़िगरेशन" UIWindowSceneSessionRoleApplication में UISceneDelegateClassName कुंजी शामिल है, लेकिन "gy.SceneDelegate" नाम के साथ वर्ग लोड नहीं कर सका

मुझे नहीं पता कि मेरी गलती कहाँ है।

ब्लैक स्क्रीन जब चल रहा है



मुझे लगता है कि आप अपने प्रोजेक्ट से अपने सीनडेलेगेट वर्ग को हटा दें
अल्फी

नीचे दिए गए बहुत सारे उत्तर त्रुटि के बिंदु को याद करते हैं और उन फिक्स का वर्णन करते हैं जो प्रश्न में सटीक त्रुटि के लिए प्रासंगिक नहीं हैं। मेरे मामले में, मैं SceneDelegateअपने लक्ष्य को जोड़ना भूल गया और बॉक्स को चेक करके इसे ठीक कर दिया।
वेन

जवाबों:


32

iOS 13

केवल अगर लक्ष्य 13 या अधिक है।

SceneDelegateiOS 13 से पहले समर्थित नहीं है । यदि आप उपयोग करना चाहते हैं SceneDelegateऔर iOS 13 से पहले iOS का समर्थन करना चाहते हैं तो आपको अपने प्रोजेक्ट में कुछ बदलाव करने होंगे।

  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. अंत में, 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 और पहले का

AppDelegateएक UIWindowसंपत्ति की जरूरत है । iOS 13SceneDelegate नई परियोजनाओं में उपयोग करता है। UIWindowऑब्जेक्ट निर्दिष्ट करें और SceneDelegate.swift फ़ाइल निकालें ।

यदि आपने SceneDelegateप्रोजेक्ट से हटा दिया है , तो आपको Info.plist से एप्लिकेशन दृश्य प्रकट शब्दकोश को हटाना होगा ।

Info.plist


ग्रेट,
थैंक्यू

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).ने मेरे मुद्दे को हल कर दिया।
सीन हॉवेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.