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 bereits das Set identifier
auf das , UIStoryboard
aber ich bin immer noch diesen Fehler.
ios
objective-c
xcode
storyboard
Matte
quelle
quelle
Antworten:
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 - Kommentare unten 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. Das Klicken 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)
quelle
In Xcode 7 - 11 ,
Wenn Sie die Storyboard-IDs ändern und solche Fehler erhalten,
REINIGEN Sie einfach Ihr Projekt ( CMD+ SHIFT+ K)
quelle
Fest! In meinem Fall muss nicht nur der Bezeichner im Abschnitt gesetzt werden, in meinem Fall DrivingDetails, sondern auch der Bezeichner in meinem tableViewController muss als DrivingDetails festgelegt werden ... überprüfen Sie mein Bild:
Ich habe auch den Navigationsansichts-Controller entfernt, sodass die beiden Tabellenansichts-Controller jetzt direkt mit einer "Push" -Animation verbunden sind.
***** BEARBEITEN für XCODE 7.0 *****
Sie müssen die Storyboard-ID festlegen (in diesem Fall ist der viewController in einen Navigationscontroller eingebettet:
quelle
[storyboard instantiateViewControllerWithIdentifier]
die Ansichten von Interface Builder im View Controller NICHT instanziiert. aber in iOS6 tat esHinweis:
"StoryboardFileName"
ist der Dateiname des Storyboards und nicht die ID des Storyboards!"StoryboardID"
ist die ID, die Sie manuell im Identitätsinspektor für dieses Storyboard festgelegt haben (siehe Abbildung unten).Manchmal glauben die Leute, dass die erste die Storyboard-ID und die zweite der Name der View Controller-Klasse ist. Beachten Sie also den Unterschied.
quelle
.instantiateViewController(withIdentifier: "StoryboardID")
sollte umbenannt werden in.instantiateStoryboard(withIdentifier: "StoryboardID")
Oder einfach etwas einfacherUIStoryboard(name: "StoryboardFileName", bundle: nil).init()
Identität befindet sich auf der Registerkarte Identitätsinspektor mit dem Namen Storyboard-ID für Xcode 6.3.2 und aktiviert die Option Storyboard-ID verwenden.
quelle
Hatte gerade dieses Problem, nachdem ich dem Storyboard eine neue VC hinzugefügt hatte, aber nur auf dem Gerät, nicht auf dem Simulator. Es stellte sich heraus, dass es mehrere Storyboard-Lokalisierungen gab - der VC wurde nur dem primären hinzugefügt. Ich habe versucht, die anderen Lokalisierungen zu entfernen (eine davon ist die, die mein iPhone verwendet), hatte aber immer noch den Fehler. Am Ende musste ich die anderen Lokalisierungen mit der neuen VC in jeder von ihnen neu erstellen .
quelle
Der Compiler zeigt folgenden Fehler an:
Hier ist das Objekt des erstellten Storyboards nicht das Haupt-Storyboard, das unsere ViewController enthält. Die Storyboard-Datei, an der wir arbeiten, heißt Main.storyboard . Wir brauchen also eine Referenz des Objekts des Main.storyboards .
Verwenden Sie dazu folgenden Code:
Hier
storyboardWithName
ist der Name der Storyboard-Datei, mit der wir arbeiten, undbundle
gibt das Bundle an, in dem sich unser Storyboard befindet (dhmainBundle
).quelle
Für diejenigen mit dem gleichen Problem wie @Ravi Bhanushali gibt es hier eine Swift 4-Lösung:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
quelle
Ich habe es gefunden ... Klicken Sie auf den View Controller im Storyboard, klicken Sie auf das dritte Symbol von links in den Inspektoren für VC-Attribute - das Symbol, in dem Sie den Anrufnamen auf der Szene festgelegt haben, auf der "Identität" steht - meine war ausgeblendet, ich musste Klicken Sie auf das Wort Identität, auf dem die Storyboard-ID angezeigt wird. Fügen Sie die Kennung aus dem Code hinzu
quelle
Das Ändern der "Storyboard-ID" im Identitätsinspektor (das dritte Symbol links) sollte funktionieren.
Wenn nicht und Sie sicher sind, dass kein Tippfehler vorliegt, bereinigen Sie das Projekt ("Produkt" -> "Bereinigen" oder einfach Befehl + Umschalt + K).
quelle
Während Sie die Kennung eingeben, haben Sie nicht den richtigen Ansichts-Controller ausgewählt. Überprüfen Sie den Vorgang nur einmal, und wiederholen Sie den Vorgang noch einmal.
quelle
Bei einigen meiner View Controller fehlte der StoryboardIdentifier Attribut .
Vor:
Nach dem:
quelle
Ich habe den gleichen Fehler erhalten und konnte diesen beheben, indem ich die folgenden Änderungen in meinem Projekt änderte. Ich habe meinen Klassennamen im Inspektorfenster erwähnt, dann ist das Problem gelöst. Gehe zu-> rechtes Feld dort Identitätsinspektor Im Abschnitt für benutzerdefinierte Klassen
Klasse: Ihr Klassenname (ViewController)
Im Abschnitt Identität Storyboard-ID: Ihre Storyboard-ID (viewController-Name)
Danach klicken Sie dort auf die Option Storyboard-ID verwenden. Damit ist das Problem behoben. Ich hoffe es hilft dir....
quelle
Verwenden Sie Ihre Kennung (@ "driverDetails") als Storyboard-ID.
quelle
Es ist sehr einfach, den jeweiligen Ansichts-Controller im Haupt-Storyboard auszuwählen und die Storyboard-ID zu überprüfen, wenn sie derzeit in der ID verwendet wird, um einen Namen zu geben und sie zu verwenden.
hier ist mein firstone die storyboardID let vc = self.storyboard? .instantiateViewController (withIdentifier: "firstone") as! tabBarViewController
quelle
Ich habe alle oben genannten Lösungen ausprobiert und keine hat funktioniert.
Was ich getan habe war:
Und dann hat es funktioniert. 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.
quelle
Das Reinigen 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.
quelle
Hinweis: Wenn Sie in Ihrem Projekt Cocoapods verwenden, führen Sie diese zuerst aus
pod deintegrate
und ausrm Podfile.lock
Öffnen Sie dann Ihren Projektordner in einem Code-Editor eines Drittanbieters wie VSCode und führen Sie eine globale Suche nach dem ViewController-Namen durch, der den Fehler auslöst.
Alles sollte jetzt gut funktionieren.
Dies wird am häufigsten verursacht, wenn Sie Dateien in Xcode umbenennen.
quelle
XCODE DRAG N DROP PANE IST GEGANGEN !!!
quelle