Ich erhalte immer wieder den folgenden Fehler:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller
with identifier 'drivingDetails'
Dies ist der Code:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"];
controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"];
[self.navigationController pushViewController:controller animated:YES];
}
Ich habe identifier
bereits auf UIStoryboard
gesetzt, erhalte aber immer noch diesen Fehler.
Fest! Es muss nicht nur der Bezeichner im Segue gesetzt sein, in meinem Fall DrivingDetails, sondern auch der Bezeichner in meinem tableViewController muss als DrivingDetails gesetzt sein ... check my picture:
Ich habe auch den Navigationsansicht-Controller entfernt, sodass jetzt die beiden Tabellenansicht-Controller direkt mit einer "Push" -Animation verbunden sind.
***** EDIT für XCODE 7.0 *****
sie müssen die storyboardId setzen (in diesem Fall ist der viewController in einen Navigationscontroller eingebettet:
let lastMinVc = mainStoryBoard.instantiateViewControllerWithIdentifier("lastMinuteNavController") as! UINavigationController
Nur zum späteren Nachschlagen:
Ich entwickle auf iOS 6 mit Storyboards.
Ich hatte das gleiche Problem, konnte jedoch das Feld "Kennung" im Inspektor nicht finden. Setzen Sie stattdessen einfach das Feld "Storyboard-ID" auf den Namen des Bezeichners. Dieses Feld befindet sich im Inspektor auf der Registerkarte "Identitätsinspektor anzeigen".
[Hinweis - Die folgenden Kommentare weisen darauf hin, dass einige Personen festgestellt haben, dass sie (auch?) Das Feld "Wiederherstellungs-ID" direkt unter der Storyboard-ID im Inspektor festlegen müssen. Ein Klick auf "Storyboard-ID verwenden" scheint nicht ausreichend zu sein.]
Es gibt ein Bild unten als Referenz: (In diesem Fall habe ich meinen Bezeichner genauso benannt wie meine Klasse)
In XCODE 7 | 8 | 9,
wenn Sie die Storyboard-IDs ändern und solche Fehler erhalten,
nur BEREINIGEN Ihr Projekt (CMD + UMSCHALT + K)
Manchmal gibt es eine Verwechslung zwischen den Begriffen.
// Swift 4
let storyboard = UIStoryboard(name: "StoryboardFileName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "StoryboardID")
self.present(controller, animated: true, completion: nil)
Beachten Sie, dass "StoryboardFileName"
Der Dateiname des Storyboards und hier nicht die ID ist, wobei "StoryboardID"
Tatsächlich die ID ist Sie haben im Identitätsinspektor manuell festgelegt. Manchmal sind die Leute verwirrt über den Unterschied zwischen den beiden, wo sie glauben, dass der erste tatsächlich die StoryboardID und der zweite ein ViewController-Klassenname ist.
Ich habe diesbezüglich einige Verwirrung gesehen, weshalb ich darüber nachgedacht habe, diese Frage zu stellen, die viele neue Programmierer in Swift mit einem ähnlichen Problem anzieht.
Die Identität befindet sich auf der Registerkarte "Identitätsinspektor" mit dem Namen "Storyboard-ID für Xcode 6.3.2" und ist mit der Option "Storyboard-ID verwenden" markiert.
Hatte gerade dieses Problem, nachdem ein neues VC zum Storyboard hinzugefügt wurde, aber nur auf dem Gerät, nicht auf dem Simulator. Es stellte sich heraus, dass mehrere Lokalisierungen des Storyboards vorhanden waren - das VC) $ === wurde nur zu der primären Lokalisierung hinzugefügt. Ich habe versucht, die anderen Lokalisierungen zu entfernen (von denen eine diejenige ist, die mein iPhone verwendet), hatte aber immer noch den Fehler. Am Ende musste ich die anderen Lokalisierungen neu erstellen mit das neue VC in jedem von ihnen.
Für diejenigen mit dem gleichen Problem wie @Ravi Bhanushali ist hier eine Swift 4 Lösung:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
Ich habe es gefunden ... klicke auf den View Controller im Storyboard, klicke auf das dritte Symbol von links in den Inspektoren für VC-Attribute - das, in dem du den Namen des Anrufs auf dem Bildschirm mit der Aufschrift "Identität" festgelegt hast - meiner war versteckt, das musste ich Klicken Sie auf die Word-Identität, dann wird die Storyboard-ID angezeigt - fügen Sie den Bezeichner aus dem Code hinzu, fertig
Compiler zeigt folgenden Fehler an:
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Storyboard (<UIStoryboard: 0x7fedf2d5c9a0>) doesn't contain a
ViewController with identifier 'SBAddEmployeeVC''
Hier ist das Objekt des erstellten Storyboards nicht das Haupt-Storyboard, das unsere ViewController enthält. As Storyboard-Datei, an dem wir arbeiten, heißt Main.storyboard. Wir brauchen also einen Verweis auf das Objekt des Main.storyboard.
Verwenden Sie dazu folgenden Code:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
Hier ist storyboardWithName
der Name der Storyboard-Datei, mit der wir arbeiten, und bundle
gibt das Bündel an, in dem sich unser Storyboard befindet (d. H. mainBundle
).
Das Ändern der "Storyboard-ID" im Identitätsinspektor (das dritte Symbol links) sollte funktionieren.
Wenn dies nicht der Fall ist und Sie sicher sind, dass kein Tippfehler vorliegt, versuchen Sie, das Projekt zu bereinigen ("Produkt" -> "Bereinigen" oder einfach Befehl + Umschalt + K).
Einigen meiner Ansichtscontroller fehlte das Attribut storyboardIdentifier .
Vor:
<viewController
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
Nach:
<viewController
storyboardIdentifier="YourViewControllerName" <----
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
Das Bereinigen aller Dinge und das Schließen von Xcode hat das Problem für mich nicht gelöst.
Ich musste den viewController löschen und einen neuen mit neuer Kennung erstellen.
es ist sehr einfach, den entsprechenden View-Controller im Haupt-Storyboard auszuwählen und die Storyboard-ID zu überprüfen, wenn sie gegenwärtig verwendet wird. Geben Sie einen Namen ein und verwenden Sie sie.
hier ist mein firstone die storyboardID lass vc = self.storyboard? .instantiateViewController (withIdentifier: "firstone") als! tabBarViewController
Verwenden Sie Ihre ID (@ "drivingDetails") als Storyboard-ID.
Überprüfen Sie bei der Eingabe der Kennung, ob Sie nicht den richtigen View-Controller ausgewählt haben, einmal, und wiederholen Sie den Vorgang noch einmal.
Ich habe den gleichen Fehler erhalten und konnte ihn beheben, indem ich die folgenden Änderungen in meinem Projekt vorgenommen habe. Ich habe meinen Klassennamen im Inspector Panel erwähnt, dann ist das Problem gelöst. Goto-> right panel there Identity Inspector Im Abschnitt für benutzerdefinierte Klassen
klasse: Ihr Klassenname (ViewController)
Im Abschnitt Identität Storyboard-ID: Ihre Storyboard-ID (viewController-Name)
Klicken Sie anschließend dort auf die Option Storyboard-ID verwenden. Damit ist das Problem behoben. Ich hoffe es hilft dir....
Ich habe alle oben genannten Lösungen ausprobiert und keine hat funktioniert.
Was ich getan habe war:
Und dann hat es geklappt. Das Schockierende war, dass ich die Storyboar-ID im Interface Builder eingegeben hatte und sie nach dem erneuten Öffnen von Xcode entfernt/gelöscht wurde.
Hoffe das hilft jemandem.