Używam Xcode 5 w nowo utworzonej aplikacji i kiedy po prostu ją utworzę, idę na przycisk uruchamiania i klikam na niego, a następnie projekt zostaje zbudowany, ale nie jest wyświetlany w symulatorze iOS i otrzymuję następujący komunikat:
Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' -
perhaps the designated entry point is not set?
Szukałem o tym w Google i wszyscy zwracają uwagę, że tak się dzieje, ponieważ XCode nie wie jeszcze, który kontroler widoku jest początkowy. Ale dziwne jest to, że stworzyłem aplikację jako aplikację opartą na stronie (wypróbowałem również opcje aplikacji z pojedynczym widokiem i kartami), a XCode już zdefiniował dla niej Storyboard.
Ponadto, gdy przechodzę do opcji głównego interfejsu projektu, ustawiany jest scenorys (o nazwie „Główny” przez sam Xcode), aw Storyboard mój kontroler widoku jest ustawiony jako „Początkowy kontroler widoku”
Co jest nie tak?
Odpowiedzi:
Więc to też przydarzyło się mnie. Sprawdziłem 50 razy i mój „Is Initial View Controller” został sprawdzony, wierz mi. Stało się to niespodziewanie. Więc jak to naprawić?
źródło
Sprawdź, czy jest początkowym kontrolerem widoku w Inspektorze atrybutów.
źródło
Najpierw kliknij kontroler widoku na pasku narzędzi po prawej stronie . Następnie wybierz Inspektor atrybutów i upewnij się, że w sekcji Kontroler widoku zaznaczone jest pole wyboru „Jest początkowym kontrolerem widoku” !
źródło
To ostrzeżenie jest również zgłaszane, jeśli masz kod, taki jak:
window = UIWindow(frame: UIScreen.mainScreen().bounds) window?.rootViewController = myAwesomeRootViewController window?.makeKeyAndVisible()
W takim przypadku przejdź do pierwszej strony ustawień docelowych i ustaw
Main Interface
jako puste, ponieważ nie potrzebujesz wpisu scenorysu dla swojej aplikacji.źródło
Korzystanie z programu Interface Builder:
Sprawdź, czy ustawiono „ Jest kontrolerem widoku początkowego ”. Możesz to ustawić, wykonując poniższe czynności:
Jeśli wykonałeś ten krok i nadal pojawia się błąd
uncheck and do it again.
Używanie programowo:
Cel C :
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; // <storyboard id> self.window.rootViewController = viewController; [self.window makeKeyAndVisible]; return YES;
Szybki:
self.window = UIWindow(frame: UIScreen.mainScreen().bounds) let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) var objMainViewController: MainViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainController") as! MainViewController self.window?.rootViewController = objMainViewController self.window?.makeKeyAndVisible() return true
źródło
didFinishLaunchingWithOptions
.Doświadczyłem tego, gdy mój kontroler paska zakładek nie pojawiał się w symulatorze wraz z czarnym ekranem. Wykonałem następujące czynności, aby moja aplikacja pojawiła się w symulatorze.
Is Initial View Controller
pod zakładką Inspektor atrybutów.Jeśli przypadkowo usunąłeś ten kontroler widoku lub w inny sposób nie ustawiłeś go jako domyślnego, zobaczysz błąd „Nie udało się utworzyć wystąpienia domyślnego kontrolera widoku dla UIMainStoryboardFile 'Main' - być może wyznaczony punkt wejścia nie jest ustawiony?” po uruchomieniu aplikacji wraz z prostym czarnym ekranem.
Aby rozwiązać problem, otwórz plik Main.storyboard i znajdź dowolny kontroler widoku, który ma być wyświetlany po pierwszym uruchomieniu aplikacji. Kiedy jest zaznaczone, przejdź do inspektora atrybutów i zaznacz pole „Jest początkowym kontrolerem widoku”. Po lewej stronie tego kontrolera widoku powinna pojawić się strzałka skierowana w prawo, pokazująca, że jest to punkt wejścia do scenorysu.
źródło
Skonfiguruj okno ręcznie,
- (void)applicationDidBecomeActive:(UIApplication *)application { if (!application.keyWindow.rootViewController) { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *myViewController= [storyboard instantiateViewControllerWithIdentifier:@"myViewController identifier"]; application.keyWindow.rootViewController = myViewController; } }
źródło
Ten błąd pojawia się, gdy zmieniam nazwę pliku scenorysu „ Main.storyboard ” NA: „ XXX.storyboard ”
Rozwiązaniem dla mnie było:
Powodzenia
źródło
Produkt „Clean” był dla mnie rozwiązaniem.
źródło
Oprócz powyższej poprawnej odpowiedzi, upewnij się również, że masz ustawiony poprawny interfejs główny w ogóle.
źródło
1 opcja
jeśli chcesz ustawić niestandardowy scenorys zamiast domyślnego kontrolera widoku.
Zmień ten atrybut z pliku info.plist
<key>UISceneStoryboardFile</key> <string>Onboarding</string>
Wdrażanie byłby nazwą Twojego scenariusza
aby otworzyć ten plik, kliknij prawym przyciskiem myszy plik info.plist i otwórz jako kod źródłowy
2. opcja
1- Kliknij swój projekt
2- Wybierz swój projekt z sekcji docelowej
3- Przejdź do interfejsu wdrażania sekcji
4- Zmień sekcję scenorysu z pola głównego interfejsu
źródło
Jeśli dodałeś nowy scenorys, musisz sprawdzić następujące punkty.
1) W pliku plist wartość sprawdzania nazwy podstawowej pliku storyboardu głównego (iPad) lub (iPhone) powinna być dopasowana do nazwy pliku storyboardu ( nie dodawaj rozszerzenia .storyboard )
2) W scenorysie powinien znajdować się jeden kontroler widoku, który jest ustawiony jako początkowy kontroler widoku
3) Oczyść i skompiluj swój projekt. :)
źródło
Jeśli regularnie oddawałeś swój kod do kontroli źródła, może to zaoszczędzić Ci kłopotów z tworzeniem nowego Storyboardu i prawdopodobnie wprowadzaniem większej liczby problemów ...
Udało mi się to rozwiązać, porównując kod źródłowy Gita wersji, która działała z zepsutą. Różnica pokazała, że pierwsza linia powinna zawierać identyfikator początkowego kontrolera widoku, w moim przypadku initialViewController = "Q7U-eo-vxw" . Przeszukałem kod źródłowy, aby upewnić się, że identyfikator istnieje. Wszystko, co musiałem zrobić, to odłożyć go i wszystko znowu działało!
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="Q7U-eo-vxw"> <dependencies> <deployment defaultVersion="1296" identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/> </dependencies> <scenes>
Oto kilka kroków, które mogą pomóc w rozwiązaniu problemu:
źródło
Sprawdź, czy masz okno var w AppDelegate.
var window: UIWindow?
Sprawdź także scenorys swojego pliku Info.plist.
<key>UIMainStoryboardFile</key> <string>Main</string>
Programowe ustawienie rootViewController w AppDelegate nie naprawi ostrzeżenia. Powinieneś wybrać, czy pozwolić scenorysowi ustawić kontroler widoku, czy zrobić to programowo.
źródło
Projekty utworzone w Xcode 11 i nowszych, po prostu zmiana pliku głównego interfejsu w ustawieniach projektu nie wystarczy.
Musisz ręcznie edytować plik Info.plist i ustawić nazwę storyboardu
UISceneStoryboardFile
również dla.źródło
Żadne z powyższych nie rozwiązało problemu. W moim przypadku nie było to również ustawienie poprawnego manifestu sceny aplikacji.
Musiałem zmienić LoginScreen na Main
źródło