iOS 7-nie można uruchomić domyślnego kontrolera widoku

Używam Xcode 5 w nowo utworzonej aplikacji i kiedy tylko ją utworzyć idę na przycisk Uruchom e kliknij na nią, następnie projekt zostanie zbudowany, ale nie pokazuje się w symulatorze iOS i dostaję następujący komunikat:

 Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - 
 perhaps the designated entry point is not set?

Wygooglowałem o tym oczywiście i wszyscy zwracają uwagę, że dzieje się tak, ponieważ XCode nie wie jeszcze, który kontroler widoku jest początkowy. Ale dziwne jest to, że stworzyłem aplikację jako stronę opartą (wypróbowałem również aplikację z pojedynczym widokiem i z kartami opcje) aplikacja i XCode już zdefiniowały dla niego Storyboard.

Również, gdy przejdę do opcji głównego interfejsu projektu, storyboard (nazwany "głównym" przez samego Xcode) jest ustawiony, a w Storyboardzie mój kontroler widoku jest ustawiony jako "kontroler początkowego widoku"

Tutaj wpisz opis obrazka

Co się stało?
Author: ROMANIA_engineer, 2014-01-02

13 answers

Więc to też przytrafiło się mnie. Sprawdzałem 50 razy i mój" jest początkowy kontroler widoku " został sprawdzony, uwierz mi. To stało się ni stąd ni zowąd. Więc jak to naprawiłem?

  1. Utwórz nowy Storyboard w swoim projekcie, nadaj mu nazwę Main_iPhoneV2 (lub iPadV2 w zależności od oryginalnego stylu storyboardu)
  2. Otwórz zepsuty storyboard, kliknij w dowolnym miejscu w białym obszarze i naciśnij command-a, a następnie command - c (Wybierz wszystko i kopiuj)
  3. Otwórz nowy storyboard i naciśnij command-v, aby wkleić dokładnie tę samą konfigurację
  4. Przejdź do ustawień projektu, Zmień "Główny Interfejs" na nowy Main_iPhoneV2 (jeśli to Twój iPad i piszesz uniwersalną aplikację, będziesz musiał edytować-Info.plist i poszukaj wartości " Main storyboard file base name (iPad)
  5. przekompiluj i przestań wyrywać włosy
 48
Author: Ryna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-02 03:46:03

Check jest kontrolerem widoku początkowego {[2] } w Inspektorze atrybutów.

Tutaj wpisz opis obrazka

 294
Author: iBapu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-12 04:07:19

Najpierw kliknij kontroler widoku po prawej stronie Narzędzia Pasek. Następnie wybierz Inspektora atrybutów i upewnij się, że w sekcji kontroler widoku zaznaczone jest pole wyboru 'is Initial View Controller'!

 38
Author: Andrew Anthony Gerst,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-20 18:53:53

Korzystanie Z Narzędzia Interface Builder :

Sprawdź, czy ustawiono 'jest kontrolerem widoku początkowego'. Możesz go ustawić, wykonując poniższe kroki:

  1. Wybierz swój kontroler widoku (który ma być wyświetlany jako ekran początkowy).
  2. Wybierz Inspektor atrybutów z okna Narzędzia .
  3. Wybierz "jest początkowym kontrolerem widoku " z sekcji kontroler widoku (Jeśli nie).

Jeśli wykonałeś ten krok i still getting error then uncheck and do it again.

Kroki do rozwiązania problemu

używanie programowo :

Objective - 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;

Swift:

        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
 13
Author: Jayprakash Dubey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-18 13:25:02

Ustaw 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;
     }
}
 10
Author: Shamsudheen TK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-02 03:40:24

To Ostrzeżenie jest również zgłaszane, jeśli masz jakiś kod jak:

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    window?.rootViewController = myAwesomeRootViewController
    window?.makeKeyAndVisible()

W tym przypadku przejdź do pierwszej strony ustawień docelowych i ustaw Main Interface na puste, ponieważ nie potrzebujesz wpisu storyboard dla swojej aplikacji.

 10
Author: superarts.org,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-13 05:54:34

Pojawia się ten błąd, gdy zmieniam nazwę pliku storyboard " Main.storyboard" do: "XXX.storyboard"

Rozwiązaniem dla mnie było:

  • Produkt - > Czysty
  • CHANGE: Pliki pomocnicze -> info.plist -> główna nazwa bazy plików storyboard -> Main TO: XXX

Powodzenia

 4
Author: Hovanes Mosoyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-04 11:22:11

Doświadczyłem tego, ponieważ mój Kontroler paska kart nie pojawia się w symulatorze wraz z czarnym ekranem. Wykonałem następujące czynności, aby moja aplikacja pojawiła się w symulatorze.

  1. przejdź do głównej.storyboard.
  2. Sprawdź Is Initial View Controller w zakładce Inspektor atrybutów.

Jest kontrolerem początkowego widoku w Inspektorze atrybutów.

 4
Author: Cons Bulaquena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-20 21:00:03

Produkt "czysty" był dla mnie rozwiązaniem.

 3
Author: Walter Schurter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-03 18:20:10

Tutaj wpisz opis obrazka

Oprócz powyższej poprawnej odpowiedzi, upewnij się również, że ustawiłeś poprawny interfejs główny w ogóle.

 3
Author: Naren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-02 14:46:21

Jeśli dodałeś nowy storyboard, musisz sprawdzić następujące punkty.

1) w pliku plist sprawdź wartość główna nazwa bazy plików storyboard (iPad) lub (iPhone) powinny być dopasowane do nazwy pliku storyboard ( nie dodawaj rozszerzenia .storyboard)

2) w storyboardzie powinien być jeden kontroler widoku, który ustawia się jako jest kontrolerem początkowego widoku

3) wyczyść i zbuduj swój projekt. :)

Tutaj wpisz opis obrazka

 2
Author: Sachin Nikumbh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-16 08:44:30

Jeśli regularnie przekazujesz swój kod do kontroli źródła, może to zaoszczędzić Ci kłopotów związanych z tworzeniem nowego storyboardu i prawdopodobnie wprowadzaniem kolejnych problemów...

Udało mi się to rozwiązać porównując kod źródłowy Git wersji, która działała przeciwko zepsutej. Różnica pokazała, że pierwsza linia powinna zawierać Id początkowego kontrolera widoku, w moim przypadku, initialViewController= "Q7U-eo-vxw". Przeszukałem kod źródłowy, aby być pewnym że identyfikator istniał. Wszystko, co musiałem zrobić, to odłożyć go z powrotem i wszystko działało ponownie!

<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:

  1. kliknij prawym przyciskiem myszy niedziałający Storyboard i użyj kontrolki Źródła > Zatwierdź... aby zachować zmiany od ostatniego commita.
  2. spróbuj kliknąć prawym przyciskiem myszy swój nieudany Storyboard i użyj "Otwórz jako > kod źródłowy", aby wyświetlić XML storyboardu.
  3. w elemencie dokumentu poszukaj atrybutu o nazwie "initialViewController ". Jeśli go nie ma, nie martw się, naprawimy to. Jeśli tam jest, Kliknij dwukrotnie przypisany do niego identyfikator, command-c, aby go skopiować, command-f command-v, aby wyszukać go głębiej w dokumencie. Jest to identyfikator kontrolera, który powinien zapewniać widok początkowy. Jeśli nie jest zdefiniowany w dokumencie, to jest to problem - należy go usunąć ze znacznika dokumentu, w moim przypadku initialViewController= "Q7U-eo-vxw".
  4. idź do Xcode z menu Widok i wybierz Edytor wersji > Pokaż Widok porównania
  5. to pokazuje Twoją lokalną wersję po lewej stronie, a historyczną po prawej. Kliknij datę pod historyczną wersją, aby uzyskać listę commitów dla tej tablicy. Wybierz ten, który zadziałał i porównaj element document . Jaki jest identyfikator *initialViewController? Czy jest inaczej? Jeśli tak, spróbuj edytować go ręcznie i uruchomić. narzędzie do porównywania historii Xcode w akcji
 1
Author: neoscribe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-20 08:24:40

Sprawdź, czy masz var okna w AppDelegate.

var window: UIWindow? 

A także sprawdź storyboard swoich informacji.plik plist.

<key>UIMainStoryboardFile</key>
<string>Main</string>

Programowe ustawienie kontrolera rootViewController w AppDelegate nie naprawi Ostrzeżenia. Powinieneś wybrać, czy pozwolić storyboardowi ustawić kontroler widoku, czy zrobić to programowo.

 0
Author: rockdaswift,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-12 10:34:35