Pakette 'Ana' adlı bir film şeridi bulunamadı


86

Garip bir hata alıyorum: 'Could not find a storyboard named 'Main' in bundle NSBundle'uygulamamı gerçek bir iOS cihazında çalıştırmaya çalışırken.

Dosya dizinimde var ve simülatörde iyi çalışıyor. Ancak Copy Bundle Resourcesbölümde dosya Main.storyboardkırmızıdır.

Kaldırmayı ve tekrar eklemeyi, Xcode'u yeniden başlatmayı, derlemeyi temizlemeyi, vb. Boşuna denedim. Bu, Xcode'da aldığım uyarı:

/Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard: Internationalization of /Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard is not available when compiling for targets before iOS 6.0


Bu sorun esas olarak bozuk uygulama kurulumundan kaynaklanmaktadır. Çözüm, projeyi temizlemek ve inşa etmektir. Ayrıca mevcut uygulamayı cihazdan / simülatörden kaldırın ve tekrar çalıştırın.
Krishnabhadra

Xcode 11 kullanıcıları, stackoverflow.com/a/58452686 adresine gidin , muhtemelen sizin durumunuzdur.
Cemen

Yanıtlar:


93

projenizin info.plist dosyasını açın ve ekran görüntüsünde görüntülenen seçili satırı kaldırınenter image description here

Siyah bir ekran alırsanız, yeni ilk film şeridinizin ana arayüzünüz olarak seçildiğinden emin olun enter image description here


24
Teşekkürler, ancak bu, uygulamamın siyah ekranla başlamasını sağladı. Yine de çökme yok.
Carpetfizz

- (BOOL) uygulamanızda şu iki satırın bulunduğundan emin olun: (UIApplication *) uygulama didFinishLaunchingWithOptions: (NSDictionary *) launchOptions ...: (1) self.window = [[UIWindow ayırma] initWithFrame: [[UIScreen mainScreen] sınırlar]]; (2) self.window.backgroundColor = [UIColor whiteColor];
Joel Hansen

@ Carpetfizz Ekle '[self.window makeKeyAndVisible];' AppDelegate'inize.
Alserda

4
"siyah ekranla uygulama başlatma", kimsenin bununla ilgili bir fikri yok mu?
Ümit Kaya

@Umitk arka planı beyaza (view.backgroundColor = .white) veya istediğiniz başka bir renge ayarlayın
Stephane Paquet

64

Xcode 11'de bu sorunla karşılaşan herkes için, film şeridi daha az proje kurulumu yaparken bu sorunla karşılaşırsanız sorunu nasıl çözeceğiniz aşağıda açıklanmıştır.

( Ricardopereira'nın kaçırdığı bazı parçaları ekleyerek )

1) Önce Main.storyboard dosyasını silin

2) Ardından PROJECT_NAME -> GENERAL bölümüne gidin

Ana arayüz açılır menüsünde, Main metnini silin

genel ayarlardan ana seçeneğe referansı kaldırmak

3) Şimdi info.plist'e gidin ve Storyboard Name'i silin

storyboard referansını info.plist'den kaldırma

4) Son olarak, SceneDelegate.swift dosyasındaki sahne (_: willConnectTo: options) kodunu değiştirin (Evet! Artık App Delegate'de değil.)

var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(frame: windowScene.coordinateSpace.bounds)
        window?.windowScene = windowScene
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()
    }

Bunun yerine bu videoya da başvurabilirsiniz: https://www.youtube.com/watch?v=Htn4h51BQsk


3
Cevabınız neredeyse doğru, sahne işlevinde küçük bir değişiklik var: guard let _ = (scene as? UIWindowScene) else { return } let viewController = ViewController() if let windowScene = scene as? UIWindowScene { self.window = UIWindow(windowScene: windowScene) self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() }
Reza Dehnavi

3
Biraz vurgu eklemek gerekirse, info.plist girişi sadece olağan ana film şeridi girişi değil, aynı zamanda iOS 13 için yeni olan uygulama sahnesi manifestindeki bir giriş. Farkına varmadan önce iki kez okumam gerekiyordu.
jboulter11

Şimdi işleri yapmanın doğru yolu bu! ^^ Apple bir şeyleri değiştirmeye devam etti.
Yuchen Zhong

59

Film şeridinin hedef üyeliğini kontrol edebilirsiniz. Sorunun olduğu yerde olabilir:

Şöyle görünmesi gerekir:

Hedef Üyelik


Aynı sorunu yaşadım ve ilk başta doğru kaynakları hedefe kopyalamadığımı düşündüm, ancak hedef üyeliğin düzeltilmesi sorunu çözdü.
pyj

2
Teşekkürler, çalıştı! Temiz, Dosyayı Yeniden Adlandır, Plist'i Güncelle'yi sevinçle yaptım. Seni anlayan her zaman en bariz olanıdır.
Jim Geldermann

Merhaba, aynı sorunu yaşıyorum ama hedef üyelik penceresi görünmüyor, Xcode 7. Lütfen yardım edin
DrPatience

Nedense hedefim seçilmedi .. Bu cevap için teşekkürler .. Çözüldü !!
Ümañg ßürmån

39

İOS 13.0 ve üzeri için oluşturulan uygulamalar için bir güncelleme. (Xcode 11)

"Info.plist'te" Ana film şeridi Dosya temel adı "ve Hedefte Dağıtım altında" Ana Arayüz "değiştirildikten sonra bile pakette 'Ana' adlı bir film şeridi bulunamadı hatası alırsanız.

Daha sonra info.plist dosyasındaki başka bir girişi değiştirmeniz gerekir.

  1. İnfo.plist dosyasını açın.
  2. "Uygulama Sahnesi Bildirimi" ni genişletin.
  3. "Sahne Yapılandırması" nı genişletin.
  4. "Uygulama Oturumları Rolü" altındaki öğe 0'ı genişletin ve ardından film şeridi adını buradan değiştirin.

görüntü açıklamasını buraya girin

Ve uygulamanız çalışmaya başlayacak.


1
Bu kesinlikle doğru cevap. Görünüşe göre ana film şeridini Genel> Ana Arayüz açılır menüsünden ayarlamak artık yeterli değil.
NRitH

1
Bunun için teşekkürler. "Uygulama Sahnesi Bildirimi" anahtarını (tüm alt anahtarlarıyla birlikte) silmek sorunu benim için çözdü.
Greg Brown

1
Ne olduğunu tam
anlamıyla

1
Hayatımı kurtardın :)
Yusuf Kamil AK

17

UISceneİOS 13 ve Xcode 11'de kullanılan bir projede , UISceneStoryboardFileanahtarı bilgisayardan kaldırmanız gerekir ..plist .

Xcode 11:

xcode11-uiscene

Doğrudan dosyadan değiştirme:

uiscene-plist


15

Uygulamayı telefonumdan sildim, Ürün -> Temizledim ve tekrar yükledim. Benim için tek gereken buydu.


her yürütme için eğer silinirse, o zaman sadece beni çalıştırıyor ... Lütfen bana xcode 10.1'de yardım edin
Aruna M

12

Bu hatayı aldım, ancak hikaye tahtalarını tamamen kaldırmak niyetindeydi.

Plistimden 'Ana Film Şeridi dosya temel adı' anahtarını kaldırmak hatayı düzeltti.


10

Pakette 'Ana' adlı bir film şeridi bulunamadı

Aklıma gelen sebep:

İOS bilgim beni sonlandırdığı kadarıyla, bu sadece XCode'un Uygulamaya kopyalamak için proje dizinimdeki Main.storyboard dosyasına referans bulamadığı için oldu.

Çözüm:

  1. Main.storyboard dosyasını seçip silmeyi denedi ve açılan iletişim kutusundan aşağıdaki gibi: görüntü açıklamasını buraya girin

  2. "Referansı Kaldır" düğmesine tıklandı.

  3. Ardından, Main.storyboard dosyasını proje dizininde bulabildiğim gerçek yerden, XCode'a sürükleyip bırakarak ve tekrar aşağıdaki gibi açılan iletişim kutusundan: görüntü açıklamasını buraya girin

  4. "Klasör referansları oluştur" u seçtim (çünkü projemin dosya ve klasör yapısını değiştirdiğim için yapmak istediğim bir şey bu). Ancak çoğu zaman "Grup oluştur" u seçmek de işe yarayabilir. Ve "Bitir" düğmesine tıklandı. Film Şeridi dosyalarım, ekran görüntüsünde zaten Base.lprojaşağıdaki gibi bir dizinde gösterildiği gibi zaten içindeydi :

    görüntü açıklamasını buraya girin

    Not: Bu adımda burada hatırlatılması gereken önemli bir şey, uygulamanıza "Hedeflere ekle" onay kutusunu AÇIK olarak işaretlemeyi unutmayın.

  5. Ürünü temizleyin, yeniden oluşturun ve başarılı olursa çoğu zaman çalıştırmayı deneyin başarılı olacaktır.

Umarım bu, oradaki başka birine yardımcı olabilir! Bunu XCode 7.3.1 ve iOS Sim 9.3 ve iPhone 6S'de denedim!


Lütfen os10.14.1 ve xc0de 10.1..am'i kurduktan sonra da bu sorunla karşılaşmam için yardım edin, ancak yine de .. projem xcode9.1'de iyi çalışıyor ..
Aruna M

@ArunaM Cevabımda verdiğim yukarıdaki adımları denediniz mi? Bunu yaptıktan sonra durum neydi?
Randika Vishman

1
Aynı hataya neden olan bir ViewController'ı projeden kaldırdığımda çözüm buydu!
Slarty Bartfast

8

Adımları takip et:

1) Önce hikaye panonuzu tıklayın

2) Ardından Dosya Denetleyicisine tıklayın

3) Ardından "Hedef Üyelik" i seçin

Ekran Görüntüsü


6

Simülatör büyük / küçük harfe duyarlı değildir, ancak cihazdır. Film şeridinizin adı MainStoryBoard değil MainStoryboard ise, bu sorununuza neden olacaktır. ve aslo * uzantıları kullanmayın, sadece storyboard adını yazın

main.storyboard -> yalnızca main , storyboard adıdır


6

Swift 5.1 ve xCode 11.2

Benim durumumda, ben değiştirmek için unuttum Storyboard NameiçindeInfo.plist

görüntü açıklamasını buraya girin

Info.plist kaynak kodu

    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <false/>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                    <key>UISceneStoryboardFile</key>
                    <string>AccountViewController</string>
                </dict>
            </array>
        </dict>
    </dict>

4
  1. Film şeridi dosyasını açın
  2. Ardından Dosya Denetçisi'ne tıklayın.
  3. Ardından "Hedef Üyelik" i seçin ve projenizi kontrol edin
  4. ViewController dosyası için de aynısını yapın !!! görsel senaryo taslağınızla ViewController.swift veya ViewController.m kullanıyorsanız önemli kısım !!!

4

Bu hata, dosyanızı sildikten sonra main.storyboard dosyanızı çöp kutusundan kurtarırken ortaya çıkar. Dün de aynı sorunla karşılaştım.

Main.storyboard'un dosya denetçisinde main.storyboard'un konum yolunu Gruba Göre Grup olarak ayarlamanız gerekir. Bundan sonra, aynı nitelikte, uygulama hedefinizdeki onay işaretini sigortalamanız gerekir (Ekteki resimde görebileceğiniz gibi).

görüntü açıklamasını buraya girin


2

Xcode 10.1'e yükselttikten sonra benim için çalışan iki farklı çözüm:

  • In Dosya-> Workspace (veya Project) Ayarlar . Eski Derleme Sistemine geçin .

  • Hedeflerinizin Derleme Aşamalarında Base.lproj klasörünü Paket Kaynaklarını Kopyala'dan (listeleniyorsa) kaldırın ve bunun yerine her bir film şeridinizin listelendiğinden ve ayrı olarak kopyalandığından emin olun.

Yukarıdaki düzeltmelerden herhangi birini uyguladıktan sonra , Ürün menüsünden Yapı Klasörünü Temizlediğinizden emin olun , aksi takdirde düzeltmeler düzgün çalışmayabilir.


1

Plist'teki satırın silinmesi uygulamamda da siyah ekrana neden oldu. Ve film şeridinin hedef üyeliğini etkinleştirerek bunu düzelttim


1

Kalpit Gajera'nın dediği gibi, "projenizin info.plistini açın ve ekran görüntüsünde görüntülenen seçili satırı kaldırın". Info.plist'ten 'Ana film şeridi dosya temel adını' kaldırmanız yeterlidir. Çıkardıktan, temizledikten ve çalıştırdıktan sonra, program artık başarısız olmayacak ancak siyah bir ekran gösterecektir. Info.plist'i tekrar açın ve satırı manuel olarak tekrar ekleyin. Sorun çözüldü.


0

main.storyboard'u seçin, görünümü iOS 6.1 ve öncesi olarak değiştirin, ardından xcode size ne yapmanız gerektiğini söyleyecektir.

görüntü açıklamasını buraya girin


0

Benim çözümüm:

İki Görünüm arasına bir Seque Bağlantısı eklediğimde ve Projekt Yapılandırmasında Dağıtım Hedefi 8.0'ın altında bu hatayı alıyorum.

tamam, IOS 6.0 için geliştirdiğinizde kolay anlaşılır (örneğin) Seque kullanamazsınız çünkü Seque IOS 8.0 veya sonrasına ihtiyaç duyar ...... ;-)

bu yüzden Dağıtım Hedefini 8.0 olarak ayarladım ve hata gitti !!!! diğer yandan, tüm Segue Bağlantılarını iptal ediyorum ve IBAction ile hallediyorum, eski okul ;-)


0

Main.Storyboard dosyasını sorunlara neden olan "mavi" alt klasöre taşıyordum, bu talimatları izleyerek alt klasörler eklemem gerekiyordu Xcode 6.3 Yeni Dosya Sorunu

sonra Main.Storyboard dosyasını sarı alt klasöre taşımak benim için işe yaradı


0

Son .xmleki kaldırarak sorunum çözüldüMain.storyboard.xml file .

Görünüşe göre sonek, projeyi içe aktardığım sürümden değişti.

Bu nedenle, dosyayı yeniden adlandırmak ( .xmlson eki kaldırmak ) ve yeniden başlatmak, ardından Project-> clean....sorunu giderdi.


0

Hala siyah ekranınız varsa, sahne temsilcinize aşağıdaki kodu eklemeyi deneyin

willConnectTo

    guard let windowScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(frame: windowScene.coordinateSpace.bounds)
    window?.windowScene = windowScene
    let navController = UINavigationController()
    let mainstoryboard:UIStoryboard = UIStoryboard(name: "Your storyboard name", bundle: nil)
    let initialController = mainstoryboard.instantiateViewController(withIdentifier: "your initial controller Identifier") as! initialController
    navController.addChild(initialController)
    window?.rootViewController = navController
    window?.makeKeyAndVisible()

0

Film şeridiniz projeye eklendiyse (xcode yardımcı program alanının Proje Dosya Denetçisi bölümünden belirleyeceksiniz)Hedef üyelik alanında onay kutusu işaretlenmiştir

Main.Storyboard"Paket kaynağını kopyala" (içindeki Build Phase) bölümünden kaldırmanız ve "Paket kaynağını kopyala" bölümüne tekrar eklemeniz yeterlidir. Bu benim için çalıştı.görüntü açıklamasını buraya girin


-1

Tamam, bu bir süreçti. Çok farklı şeyler deniyor. Xcode 6.4'ü OS 10.11'de çalıştırma. 'Ana' sorunu bulamama. Sonunda yaptığım şey, Finder'dan masaüstümde main.storyboard'u da kapatmak oldu. xcode yeniden başlatıldı, şimdi kırmızı main.storyboard'a sahip. çalıştırıyorum neredeyse aynı şeyi yapıyor. sonra proje klasörüne sağ tıklıyorum ve dosya ekle seçeneğini seçiyorum ... Bulunduğu yere göz atın ve açın. o zaman sağda olduğu zaman kimlik müfettişi olmalıdır. konum altındaki küçük klasöre tıklayın. o klasöre tekrar göz atın ve seçin. Sonra koştum ve işe yaradı. Amin !!!


-1

İlk önce film şeridinin sol tarafındaki listede görünmesini istediğiniz görünüm denetleyicisini seçin, ardından öznitelik denetçisinde başlığının "Ana" olduğundan ve "İlk Görünüm Denetleyicisidir" onay kutusunun seçildiğinden emin olun.

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.