XCode, yolda geçerli bir derlenmiş storyboard yok

Film şeridi içeren bir alt proje ile iPad ve iPhone için evrensel bir XCode Projesi (ObjC) aldım. Alt proje, ana projeye eklenmiş statik bir kütüphanedir. Bu alt projeye dahil edilmiş olan, belli bir storyboard içeren bir pakettir.

Ne zaman ben uygulamanın belirli bir düğmeye dokunduğumda, storyboard yüklenmeli;

[UIStoryboard storyboardWithName:@"UIControls.bundle/Config" bundle:nil];

Bu iPhone için mükemmel çalışıyor (cihazlar ve simülatörler), ancak projeyi bir iPad (cihaz veya simülatör) çalıştırmaya çalıştığımda aşağıdaki hatayı alıyorum;

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'There doesn't seem to be a valid compiled storyboard at path...

Ne hakkında Proje evrensel bir projedir, öyleyse iPad neden film şeridini bulamıyor?

7
Hayır, şans da yok.
katma yazar AlBirdie, kaynak
Aslında, neyse, bir meslektaşım kurtarmaya geldi. Paketin kendisi, iPad'i hedef cihaz ailesine dahil etmedi. Yine de teşekkürler çocuklar!
katma yazar AlBirdie, kaynak
Bunu dene: [UIStoryboard storyboardWithName: @ "UIControls.bundle/Config" paketi: [NSBund & zwnj; le mainBundle]];
katma yazar LoVo, kaynak
Ya da config ve name olarak kullanın ve sizden mainBundle yerine UIControls.bundle adlı bir paket özelliği oluşturun.
katma yazar LoVo, kaynak
Sadece yol yerine Config'i kullanmayı denediniz mi?
katma yazar Black Magic, kaynak

8 cevap

Kendi soruma cevap vermek için;

Paket hedefi evrensel olmadığında bu hata görünür. Bu nedenle, paketin derleme ayarlarında Hedeflenen Aygıt Ailesi'nin iPhone VE iPad olarak ayarlandığından emin olun.

enter image description here

16
katma
Hedeflenen cihaz ailesini xcode 8.4'te nerede bulabilirim?
katma yazar vp2698, kaynak
Teşekkürler! Buna deli oluyordum.
katma yazar emix, kaynak
Çözümünüz harika çalıştı - TEŞEKKÜRLER !!!
katma yazar Lynn S, kaynak

Bir projeyi Evrensel hedeften yalnızca iPad'e ve dağıtım hedefini iOS 9.0'dan iOS 7.1'e geçirdikten sonra sorunla karşılaştınız.

Çözüm, film şeridinde 'Boyut Sınıflarını Kullan'ı devre dışı bırakmak ve yalnızca iPad'in boyutlarını korumaktı.

Bu onay kutusuna ulaşmak için proje gezgininde film şeridini açın, ardından Dosya Denetçisi'ni (ilk simge) gösterin ve ardından Arayüz Oluşturucu Belgesi başlığına gidin.

3
katma

Özel bir Cocoapod'dan bir Storyboard kullanıyordum ve çökmeye devam ediyordu.

Yolda "geçerli bir derlenmiş storyboard" görünmüyor ...

Etkilenen film şeridinde Arabirim Oluşturucu Belgesi altında, "Oluşturulanlar" değerini "iOS 7.0 veya üstü" olarak "Proje Dağıtım Hedefi" olarak değiştirdim (bu, 9.0 idi), bu benim için yaptı.

2
katma

Bizim durumumuzda, XCode'un komut satırı araçlarından birini yapan bir kabuk betiği çalıştırıyorduk: ibtool ,

ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target 6.0 --output-format human-readable-text --compile ./Build/Release-iphonesimulator/TestApp.app/TestStoryboard.storyboardc ./Resources/TestStoryboard.storyboard --sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk

ve hatasız bir şekilde göründüğünü görse de aslında boş bir storyboardc dizini oluşturdu. Minimum dağıtım hedefini 8.0'a yükseltmek, içinde Info.plist dosyası bulunan, düzgün bir şekilde oluşturulmuş bir storyboardc üretti. IBTool boş bir dizini başarısız/ürettiğinde, kesinlikle başarısız olması gerektiğini düşünüyorum ve derlemeyi durdurur, çünkü aksi halde her şey doğru ayarlanmış ve doğru görünüyor, aslında değil.

Yani evet, bizim için çözüm bizim app minimum dağıtım hedefini yükseltmekti.

0
katma

Benim için çözüm:

Yeni bir görünüm denetleyicisi yüklemek için bu kodu kullandım - [UIStoryboard storyboardWithName: @ "UIViewController" bundle: nil];

İlk denedim - [UIStoryboard storyboardWithName: @ "UIViewController" paketi: [NSBundle mainBandle]];

Ama şanslı değilim, sonunda bu kodu değiştirdim:

[self performSegueWithIdentifier: @ "Segue" gönderen: self];

Ve yardımcı oldu, belki birilerine de yardım edebilir.

0
katma

Ben de bu sqlite db dosyasını açmadı ve bu her şey bu db başarısızlıktan sonra bozuk olduğunu bulana kadar hiçbir umutsuz 2 gün boyunca bu sorunu çözmeye çalışıyordu. bu benim davamdı. Ve bunların hepsi, ARC sıfırdan bitince diziler veya sözlükler ayarlansa bile bir hafıza sorunuydu;

0
katma
Aynı sorunla karşı karşıyayım, olası çıkış yolu nedir?
katma yazar TechGuy, kaynak

Önceki yorumlarım için üzgünüm.
Neden işe yaramadığını bilmiyorum, ancak şu anda bu sorunu aşağıdaki adımlarla düzelttim:

  1. Go to Project Target -> Info and then delete KeyValue object for key Main storyboard file base name and Main storyboard file base name (iPad).
  2. To ensure that it's completely removed, go to Info.plist file and verify the KeyValue objects aren't exist there. If they are, then also delete from there.
  3. Remove references to Storyboards from Xcode project.
  4. Add Storyboards back to the project by right-click on the project in Xcode -> Add files to project_name, tick the Copy items if needed, Create groups and project target options.
  5. Set Storyboards names both for iPhone and iPad in Project Target –> Info, by adding previously removed KeyValue objects.

Bundan böyle Storyboard'lar daha önce olduğu gibi çalışıyor!

0
katma

Durum Çubuğu Stilinin Storyboard rengindeki değişiklikler nedeniyle ve proje ayarlarında değişiklik olmadığından bu sorunu yaşadım

0
katma