2015-04-10 8 views
7

Ich habe ein universelles XCode-Projekt (ObjC) für iPad und iPhone mit einem Unterprojekt, das ein Storyboard enthält. Das Teilprojekt ist eine statische Bibliothek, die dem Hauptprojekt hinzugefügt wurde. In diesem Teilprojekt ist ein Paket enthalten, das ein maßgeschneidertes Storyboard enthält.XCode kein gültiges kompiliertes Storyboard im Pfad

Wenn ich einen bestimmten Button der Anwendung antippen, muss das Storyboard geladen werden;

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

Die völlig in Ordnung für das iPhone (Geräte und Simulatoren) funktioniert, aber wenn ich das Projekt ein ein iPad (Gerät oder Simulator) versuchen zu laufen, ich die folgende Fehlermeldung erhalten;

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

Was ist los? Das Projekt ist ein universelles Projekt, warum kann das iPad das Storyboard nicht finden?

+0

Versuchen Sie Folgendes: '[UIStoryboard storyboardWithName: @" UIControls.bundle/Config ": [NSBundle mainBundle]];' – LoVo

+0

Nein, auch kein Glück. – AlBirdie

+0

Haben Sie versucht, nur Config anstelle des Pfades zu verwenden? –

Antwort

16

Um meine eigene Frage zu beantworten;

Dieser Fehler tritt auf, wenn das Bündelziel nicht universell ist. Stellen Sie daher sicher, dass die Zielgruppe der Geräte in den Build-Einstellungen des Pakets auf iPhone UND iPad eingestellt ist.

enter image description here

+0

Ihre Lösung hat super funktioniert - DANKE !!! –

+0

Danke! Ich wurde verrückt. – emix

+0

Wo finde ich eine zielgerichtete Gerätefamilie in xcode 8.4 – vp2698

0

Es tut mir leid für meine vorherigen Kommentare.
Ich weiß nicht, warum es nicht funktioniert hat, aber zur Zeit fixiert ich dieses Problem mit folgenden Schritten:

  1. Go Ziel Projekt -> Info und dann KeyValue Objekt für Schlüssel Hauptstoryboard-Datei Basisnamen löschen und Haupt-Storyboard-Datei Basisname (iPad).
  2. Um sicherzustellen, dass es vollständig entfernt wird, gehen Sie zur Info.plist-Datei und vergewissern Sie sich, dass die KeyValue-Objekte dort nicht vorhanden sind. Wenn sie sind, dann lösche auch von dort.
  3. Entfernen Sie Verweise auf Storyboards aus dem Xcode-Projekt.
  4. Storyboards für das Projekt mit der rechten klicken Sie auf Hinzufügen zurück auf das Projekt in Xcode - wenn benötigt> Hinzufügen von Dateien zu project_name, Zutreffendes Elemente kopieren, Gruppen erstellen und Projektzieloptionen.
  5. Setzen Sie Storyboards Namen für iPhone und iPad in Projekt Ziel -> Info, indem Sie vorher entfernte KeyValue Objekte hinzufügen.

Ab sofort arbeiten Storyboards wie zuvor!

0

Ich habe versucht, dieses Problem für 2 Tage ohne Hoffnung zu beheben, bis ich fand, dass es auch die SQLite-DB-Datei auch nicht geöffnet hat und danach alles nach diesem DB-Fehler beschädigt ist. das war mein Fall. Und all das war ein Speicherproblem, selbst wenn ARC Arrays oder Wörterbücher nach dem Beenden auf null setzen würde;

+0

Ich stehe vor demselben Problem, was ist der mögliche Ausweg? – TechGuy

3

Dies wurde nach dem Umschalten eines Projekts von einem Universal-Ziel nur auf iPad und dem Bereitstellungsziel von iOS 9.0 auf iOS 7.1 durchgeführt.

Die Lösung bestand darin, 'Größenklassen verwenden' auf dem Storyboard zu deaktivieren und nur die Größen für das iPad beizubehalten.

auf diese Checkbox erhalten, das Storyboard im Projektnavigator öffnen, und wählen Sie dann die Datei-Inspektor zeigen (erstes Symbol) und scrollen Sie zum Interface Builder Dokument Überschrift.

2

ich ein Storyboard aus einem benutzerdefinierten Cocoapod mit und es hielt mit Absturz

Es scheint nicht eine „gültig zusammengestellt Storyboard“ auf Weg zu sein ...

In der betroffenes Storyboard, unter Interface Builder Document habe ich den "Builds for" -Wert von "iOS 7.0 oder höher" auf "Project Deployment Target" (was 9.0 war) gesetzt, das hat den Trick für mich gemacht.

0

In unserem Fall waren wir ein Shell-Skript ausgeführt wird, der eine von Xcode Commandline-Tools ausgeführt, 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 

und während es schien ohne Fehler zu laufen, es erzeugt tatsächlich ein leeres storyboardc Verzeichnis. Das Aktualisieren des minimalen Bereitstellungsziels auf 8.0 ergab eine ordnungsgemäß erstellte Datei storyboardc mit einer Datei Info.plist. Wenn IBTool fehlschlägt/ein leeres Verzeichnis erzeugt, denke ich definitiv, dass es tatsächlich fehlschlagen sollte, und die Kompilierung beenden, weil sonst alles so aussieht, als sei es richtig eingerichtet und korrekt, es ist es tatsächlich nicht.

Also ja, Lösung für uns die minimale Implementierungsziel unserer App wurde ein Upgrade.

0

hatte ich dieses Problem aufgrund von Änderungen in der Storyboard-Farbe der Statusleiste Stil und nicht in Projekteinstellungen

0

Für mich Lösung verändert ist:

ich diesen Code verwendet lade einen neuen View Controller - [UIStoryboard storyboardWithName: @ "UIViewController" bundle: nil];

Zuerst habe ich versucht - [UIStoryboard storyboardWithName: @ "UIViewController" Bündel: [NSBundle mainBandle]];

Aber kein Glück, schließlich änderte ich diesen Code zu:

[self performSegueWithIdentifier: @ "Segue" Absender: self];

Und es half, vielleicht ist es auch jemand helfen kann.

Verwandte Themen