Ciągle otrzymuję następujący błąd:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller with identifier 'drivingDetails'
To jest kod:
- (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];
}
I już ustawić identifier
na UIStoryboard
ale ja wciąż otrzymuję ten błąd.
ios
objective-c
xcode
storyboard
Mata
źródło
źródło
Odpowiedzi:
Tylko w celach informacyjnych:
Tworzę na iOS 6 przy użyciu Storyboards.
Miałem ten sam problem, ale nie mogłem znaleźć pola „Identyfikator” w inspektorze. Zamiast tego po prostu ustaw pole o nazwie „Identyfikator scenorysu” na taką, jaką nazwałbyś Identyfikatorem. To pole można znaleźć w zakładce „Pokaż inspektora tożsamości” w Inspektorze.
[Uwaga - poniższe komentarze wskazują, że niektóre osoby odkryły, że muszą (również?) Ustawić pole „Identyfikator przywracania” tuż pod identyfikatorem serii ujęć w inspektorze. Kliknięcie „Użyj identyfikatora scenorysu” wydaje się nie wystarczać.]
Poniżej znajduje się obraz jako odniesienie: (w tym przypadku nazwałem swój identyfikator tak samo jak moja klasa)
źródło
W Xcode 7-11 ,
kiedy zmieniasz identyfikatory scenorysu i otrzymujesz takie błędy,
po prostu Wyczyść swój projekt ( CMD+ SHIFT+ K)
źródło
Naprawiony! Nie tylko identyfikator w segue musi być ustawiony, w moim przypadku DrivingDetails, ale także identyfikator w moim tableViewController musi być ustawiony jako DrivingDetails ... sprawdź moje zdjęcie:
Usunąłem również kontroler widoku nawigacji, więc teraz dwa kontrolery widoku tabeli są połączone bezpośrednio z animacją „wypychania”.
***** EDYCJA dla XCODE 7.0 *****
musisz ustawić storyboardId (w tym przypadku viewController jest osadzony w kontrolerze nawigacji:
źródło
[storyboard instantiateViewControllerWithIdentifier]
NIE tworzy się instancji widoków z Interface Builder wewnątrz kontrolera widoku; ale w iOS6 tak się stałoUwaga:
"StoryboardFileName"
jest nazwą pliku serii ujęć, a nie identyfikatorem serii ujęć!"StoryboardID"
to identyfikator, który ręcznie ustawiłeś w inspektorze tożsamości dla tego scenorysu (patrz zrzut ekranu poniżej).Czasami ludzie uważają, że pierwszy z nich to identyfikator scenorysu, a drugi nazwa klasy kontrolera widoku, więc zwróć uwagę na różnicę.
źródło
.instantiateViewController(withIdentifier: "StoryboardID")
powinien zostać zmieniony na.instantiateStoryboard(withIdentifier: "StoryboardID")
Lub po prostu coś prostszegoUIStoryboard(name: "StoryboardFileName", bundle: nil).init()
Tożsamość znajduje się na karcie Identity Inspector o nazwie Storyboard ID dla Xcode 6.3.2 i zaznaczono opcję Use Storyboard ID.
źródło
Po prostu miałem ten problem po dodaniu nowego VC do storyboardu, ale tylko na urządzeniu, a nie na symulatorze. Okazuje się, że wynikało to z posiadania wielu lokalizacji scenorysów - VC został dodany tylko do pierwotnego. Próbowałem usunąć inne lokalizacje (z których jedna jest tą, której używa mój iPhone), ale nadal występował błąd. W końcu musiałem odtworzyć inne lokalizacje z nowym VC w każdej z nich.
źródło
Kompilator wyświetla następujący błąd:
W tym przypadku obiekt utworzonego storyboardu nie jest główną planszą, która zawiera nasze ViewControllers. Jako plik storyboardu, nad którym pracujemy, nosi nazwę Main.storyboard . Więc musimy mieć odniesienie do obiektu Main.storyboard .
Użyj do tego następującego kodu:
Oto
storyboardWithName
nazwa pliku storyboardu, z którym pracujemy ibundle
określa pakiet, w którym znajduje się nasz storyboard (tjmainBundle
.).źródło
Dla tych, którzy mają ten sam problem, co @Ravi Bhanushali, oto rozwiązanie Swift 4:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
źródło
Znalazłem to ... kliknij kontroler widoku w scenorysie, kliknij trzecią ikonę od lewej na inspektorach atrybutów vc - ten, w którym ustawiłeś nazwę połączenia na tym ekranie, mówi `` tożsamość '' - mój był ukryty, musiałem kliknij słowo tożsamość, a następnie wyświetli się storyboardID - dodaj identyfikator z kodu, gotowe
źródło
Modyfikacja „Storyboard ID” w inspektorze tożsamości (trzecia ikona po lewej) powinna działać.
Jeśli nie i jesteś pewien, że nie ma literówki, spróbuj wyczyścić projekt („Produkt” -> „Wyczyść” lub po prostu polecenie + Shift + K).
źródło
Podczas wpisywania identyfikatora u nie wybrałeś odpowiedniego kontrolera widoku, po prostu sprawdź raz, czy skończył, powtórz procedurę jeszcze raz.
źródło
Niektórym z moich kontrolerów widoku brakowało identyfikatora storyboardu atrybutu .
Przed:
Po:
źródło
Wystąpił ten sam błąd i mogłem to naprawić, zmieniając następujące zmiany w moim projekcie. Podałem nazwę klasy w panelu inspektora, a problem został rozwiązany. Idź do-> prawy panel tam Inspektor tożsamości W sekcji klasy niestandardowej
class: nazwa twojej klasy (ViewController)
W sekcji Identity identyfikator storyboardu: identyfikator serii ujęć (nazwa kontrolera widoku)
Po tym kliknij opcję Użyj identyfikatora scenorysu tam, to znaczy, że problem został rozwiązany. Mam nadzieję, że ci to pomoże ....
źródło
Użyj swojego identyfikatora (@ "drivingDetails") jako identyfikatora scenorysu.
źródło
to jest bardzo proste, wybierz odpowiedni kontroler widoku w głównej planszy scenariuszy i sprawdź StoryboardID, jeśli jest obecny, użyj go w identyfikatorze, podaj nazwę i użyj go.
tutaj moim pierwszym jest storyboardID let vc = self.storyboard? .instantiateViewController (withIdentifier: "firstone") as! tabBarViewController
źródło
Wypróbowałem wszystkie powyższe rozwiązania i żadne nie działało.
To co zrobiłem to:
I wtedy zadziałało. Szokujące było to, że wprowadziłem Storyboar ID w konstruktorze interfejsów i został on usunięty / usunięty po ponownym otwarciu Xcode.
Mam nadzieję, że to komuś pomoże.
źródło
Czyszczenie wszystkich rzeczy i zamknięcie Xcode nie rozwiązało problemu.
Musiałem usunąć viewController i utworzyć nowy z nowym identyfikatorem.
źródło
Uwaga: Jeśli używasz cocoapods w swoim projekcie, najpierw uruchom
pod deintegrate
irm Podfile.lock
Następnie otwórz folder projektu w dowolnym edytorze kodu innej firmy, takim jak VSCode, i wykonaj globalne wyszukiwanie nazwy ViewController, która zgłasza błąd.
Teraz wszystko powinno działać dobrze.
Jest to najczęściej spowodowane zmianą nazw plików z poziomu Xcode.
źródło
XCODE DRAG N DROP PANE ZNIKNĘŁO !!!
źródło