iOS uygulamamı çalıştırdığımda siyah ekran


12

Xcode'da yeni bir iOS uygulaması yapmaya çalışıyorum. Ana bir storyboard yaptım ve ViewController'ımın üzerine bir etiket ekledim. Uygulamamı çalıştırdığımda, ilk olarak etiketi gösterir ve daha sonra hatasız ekran siyahı olur.

Xcode 11 (Swift 5) üzerinde çalışıyorum ve bu mesaj çıktıda görünüyor:

[SceneConfiguration] Info.plist yapılandırması UIWindowSceneSessionRoleApplication için "Varsayılan Yapılandırma" UISceneDelegateClassName anahtarını içeriyordu, ancak "gina.SceneDelegate" adıyla sınıfı yükleyemedi

Hatanın nerede olduğunu bilmiyorum.

çalışırken siyah ekran



Sanırım SceneDelegate sınıfınızı projenizden kaldırdınız
Alfi

Aşağıdaki yanıtların birçoğu hatanın noktasını gözden kaçırıyor ve söz konusu tam hata ile ilgili olmayan düzeltmeleri açıklıyor. Benim durumumda, sadece hedefime eklemeyi unutmuş SceneDelegateve kutuyu işaretlemiştim.
Wayne

Yanıtlar:


32

iOS 13

Yalnızca hedef 13 veya daha büyükse.

SceneDelegateiOS 13'ten önce desteklenmez . Kullanmak isterseniz SceneDelegateve ayrıca desteklemek istiyoruz iOS 13 iOS önce o zaman bir projeniz bazı değişiklikler eklemek zorunda.

  1. SceneDelegate.swift dosyasında tüm sınıfa kullanılabilirlik özelliği ekleyin .
@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
   ...
}
  1. AppDelegate.swift dosyasının iki yeni SceneDelegateyöntemi vardır. Bunlara da kullanılabilirlik özelliği ekleyin.
@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. Son olarak, AppDelegate.swift dosyasınaUIWindow nesne ekleyin .
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 ve öncesi

AppDelegatebir UIWindowmülke ihtiyacı var . iOS 13 kullanımlar SceneDelegateyeni projelerde. UIWindowNesneyi belirtin ve SceneDelegate.swift dosyasını kaldırın .

Kaldırılan varsa SceneDelegateprojeden, ardından kaldırmak gerekir Uygulama Sahne Manifest sözlüğü Info.plist .

Info.plist


Harika, teşekkür ederim
Mohammad Razipour

1

Pencereyi şu şekilde başlatmanız gerekir:

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

ve bunları info.plist'e ekleyin:

<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>

Tüm yapmanız gereken bu.


Aynı sorunu yaşadım, önek $(PRODUCT_MODULE_NAME).sorunumu çözdü.
Sean Howell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.