Dodałem nowy plik stalówki do mojego projektu i próbowałem go załadować.
Jednak po kliknięciu ikony paska narzędzi, która ma zabrać mnie do utworzonego przeze mnie widoku, pojawia NSInternalInconsistencyException
się komunikat:
Zamykanie aplikacji z powodu nieprzechwyconego wyjątku „NSInternalInconsistencyException”, powód: „- [UIViewController _loadViewFromNibNamed: bundle:] załadował końcówkę„ ... ”, ale ujście widoku nie zostało ustawione.”
Otworzyłem więc plik stalówki i widzę, że nie ma żadnych zestawów punktów odniesienia. Próbuję jednak kliknąć i przeciągnąć kółko dla „nowego ujścia odniesienia” do właściciela pliku, ale nie pozwoli mi to ... co muszę zrobić, aby wyświetlić mój widok?
Odpowiedzi:
Macie rację, ale ponieważ jestem nowicjuszem, zajęło mi to trochę czasu, aby wymyślić wszystkie kroki, aby to zrobić. Oto, co zadziałało dla mnie:
źródło
MyViewController
jest podklasą podklasyUIViewController
i nie ma jejview
w „Outlets”. Jeśli podklasęMyViewController
bezpośrednio zUIViewController
widoku pojawia się „Wyloty”. Magia lub błąd Xcode.To jest propozycja Josh Justice, ale graficznie (zdjęcia są moje):
Wreszcie kontroler widoku jest tworzony przy użyciu ruchomego kodu:
źródło
Zasadniczo mogę to naprawić, zmieniając połączenie między właścicielem pliku a widokiem. Przeciągnij z wciśniętym klawiszem Control od właściciela pliku do swojego widoku (w IB) i wybierz widok z wyskakującego menu.
źródło
Wyświetl tożsamość - Tożsamość klasy nie została ustawiona. Po ustawieniu odpowiedniej klasy problem został rozwiązany.
źródło
Czy na pewno masz UIView (lub podklasę) przypisany do właściwości „view” swojego kontroleraViewView?
Kliknij prawym przyciskiem myszy „File Owner” w lewym okienku xib dla twojegoViewController i sprawdź, czy ujście „view” jest ustawione. Jeśli nie, ustaw go w widoku!
to zdecydowanie rozwiąże problem
źródło
Dla mnie wszystkie rzeczy tutaj wymienione https://stackoverflow.com/a/6395750/939501 były prawdziwe, ale nadal zgłaszał błąd, powodem było to, że utworzyłem klasę View o nazwie ABCView, a następnie usunąłem ją później dodałem kontroler widoku jako ABCViewController, więc w jakiś sposób odnosiło się to do starego ABCView w nowym kontrolerze widoku, musiałem usunąć ABCViewController i dodać nowy o innej nazwie, który rozwiązał mój problem.
Dzięki
źródło
Miałem ten sam problem z XCode 4.6.3. Zacząłem się z kilku plików o nazwach
MySettingsView.h
a.m
jednak usunięte ich korzyśćMySettingsViewController.h
, ale mimo starając większość podpowiedzi tu wspomnieć, to nadal utrzymuje erroring z,Najwyraźniej nadal był „zdezorientowany”, próbując załadować MySettingsView.xib zamiast MySettingsView Controller .xib. Może jego logika „rób, co mam na myśli” jest zbyt wymyślna.
Więc obejrzałem ten problem, wpisując na stałe nazwę NIB / XIB w MySettingsViewController.m:
źródło
Dla każdego, kto używa metody Xib do utworzenia UIView i ma ten problem, zauważysz, że nie będziesz mieć ujścia „widok” w menu inspektora połączeń. Ale jeśli ustawisz niestandardową klasę Właściciele pliku na UIViewController, a następnie zobaczysz ujście „widok”, które możesz po prostu CMND podłączyć ujście do CustomView.
źródło
Mój problem z tym był spowodowany tym, że w folderze klasy znajdowała się zdublowana końcówka, która nie miała ustawionego widoku. Wyglądało na to, że xcode wybrał jedną końcówkę do kompilacji, a potem drugą przy następnym tworzeniu projektu. Właśnie usunąłem drugi. Wygląda dobrze. Doh!
źródło
Po prostu spędziłem ponad godzinę próbując dowiedzieć się, dlaczego moja właściwość view nie jest ustawiona w moim kontrolerze widoku po zainicjowaniu jej z końcówki. Pamiętaj, aby wywołać „[super initWithNibName ...]” wewnątrz initWithNibName kontrolera widoku.
źródło
Właśnie to naprawiłem w moim. Duży projekt, dwa pliki. Jeden to „ReallyLargeNameView”, a drugi to „ReallyLargeNameViewController”
W oparciu o drugą odpowiedź wybraną powyżej zdecydowałem, że powinienem wyczyścić moją kompilację. Nada, ale wciąż byłem podejrzany o XCode (ponieważ mam dwie identyczne klasy, powinienem je wyodrębnić, ale eh ...) Więc ktoś pracuje, nie ma. Nazwy właścicieli plików są do tej pory kopiowane i wklejane, gniazdka ponownie podłączone, xCode ponownie uruchomiony, wciąż nic.
Więc usuwam podobną nazwaną klasę (która jest widokiem). Wkrótce nowy błąd „wylot wewnątrz nie jest podłączony” dosłownie brzmiał „webView nie kluczowa wartość” bla ... mówiąc w zasadzie „Visual Studio jest lepszy”. W każdym razie ... Usuwam mniejszy nazwany plik i bam, to działa.
XCode jest mylony przez pliki o podobnych nazwach. Projekt jest na tyle duży, że trzeba go trochę zrestartować, co może być jego częścią.
Chciałbym mieć bardziej techniczną odpowiedź niż „XCode jest zdezorientowany”, ale cóż, xCode jest w tym momencie bardzo zdezorientowany. Nie pomieszałem tego w ten sam sposób, w jaki pomogę małemu dziecku. Działa teraz :) Powinien przynieść korzyści innym, jeśli powyższe nic nie naprawi.
Zawsze pamiętaj, aby wyczyścić swoje kompilacje (usuwając również symulator)
źródło
Miałem również ten sam problem i mój problem polegał na tym, że dodałem inną lokalizację (w języku angielskim) do końcówki ViewControllers, aby moja aplikacja z niemieckim językiem lokalizacji nie mogła znaleźć końcówki z językiem lokalizacji w języku angielskim !! Mam nadzieję, że to pomoże każdemu!
źródło
źródło
Dla mnie problem był spowodowany dzwonieniem
initWithNibName:bundle:
. Korzystam z komórek widoku tabeli z pliku stalówki do definiowania formularzy wejściowych, na których siedzątableViews
. Ponieważ nie mam widoku, nie ma sensu się do niego przyczepiać. Zamiast tego, jeśli wywołaminitWithStyle:
metodę, a następnie z niej załaduję plik stalówki, wtedy wszystko będzie działać zgodnie z oczekiwaniami.źródło
Poprzednie odpowiedzi prawie rozwiązały dla mnie problem, ale brakowało ostatniego kroku.
Teraz wszystkie dodane @IBOutlety zostaną dołączone.
Na zdrowie, Richard
źródło
Miałem ten sam problem, ale wymagało nieco innego rozwiązania. Problemem w tym przypadku była klasa właściciela pliku, a nie klasa widoku. Aby to ustawić, musiałem kliknąć ikonę „odtwarzanie wstecz” w lewym dolnym rogu okna Konstruktora interfejsów, a następnie pojawiły się opcje, które izolowały cechy właściciela pliku, pierwszego obiektu odpowiadającego i widoku. Kliknięcie pierwszego (dużego przezroczystego pola) pozwoliło mi ustawić niestandardową klasę zgodnie z powyższym opisem.
źródło
Miałem ten sam problem, ale potrzebne było inne rozwiązanie. Problem w tym przypadku polegał na tym, że klasa właściciela pliku nie była podłączona do pliku xib.
źródło
Dzisiaj spotkałem coś bardzo podobnego z podklasą Swift UIViewController. W tym przypadku żadna z powyższych poprawek nie działała, ale nieco zmieniła się kolejność zmian w moim kodzie. Net-net z rozszerzeniem do podklasy występuje, zanim sama definicja podklasy w tym samym pliku wydaje się mylić XCode, pomimo kompilacji w porządku; poprawką było umieszczenie rozszerzeń po definicji podklasy.
Opublikowałem szczegóły w odpowiedzi na to podobne pytanie .
źródło
W moim przypadku wyznaczony inicjator
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
w klasie *** ViewController został zaimplementowany, więc nawet jeśli wywołam inny inicjator w celu zainicjowania obiektu, zostanie on wywołany.Aby rozwiązać ten problem, sprawdź czy
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
jest to również właściwy sposób.źródło
Natknąłem się na ten problem w nieco inny sposób niż inne odpowiedzi tutaj.
Jeśli po prostu utworzyłem nowy plik xib, dodałem do niego UIViewController w Konstruktorze interfejsów i ustawiłem tę niestandardową klasę UIViewController na moim kontrolerze widoku, co spowodowało awarię „widok ujścia nie został ustawiony”. Inne rozwiązania mówią o przeciągnięciu kontrolnego ujścia widoku do Widoku, ale dla mnie ujście widoku było wyszarzone i nie mogłem go przeciągnąć.
Doszedłem do wniosku, że mój błąd polegał na dodaniu UIViewController w Interface Builder. Zamiast tego musiałem dodać UIView i ustawić niestandardową klasę właściciela pliku na mój kontroler widoku. Następnie mogłem przeciągnąć kontrolnie ujście właściciela pliku do nowego widoku UIView i wszystko działało tak, jak powinno.
źródło
Właśnie miałem ten sam błąd w moim projekcie, ale z innego powodu. W moim przypadku miałem konfigurację IBOutlet o nazwie „Widok” w mojej niestandardowej klasie UITableViewController. Wiedziałem, że „widok” był wyjątkowy, ponieważ należy on do klasy podstawowej, ale nie sądziłem, że widok (inny przypadek) również stanowiłby problem. Wydaje mi się, że w niektórych obszarach Kakao nie jest rozróżniana wielkość liter i prawdopodobnie ładowanie xib jest jednym z tych obszarów. Właśnie zmieniłem nazwę na DefaultView i teraz wszystko jest w porządku.
źródło
wybierz właściciela plików i otwórz inspektora tożsamości, podając nazwę klasy, której dotyczy. Jeśli żadna z powyższych metod nie działa, a nadal nie widzisz ujścia widoku, podaj nowy odnośnik ujścia Połączenie z Właścicielem pliku, możesz zobaczyć ujście widoku. Kliknij widok Outlet, aby nawiązać połączenie między View Outlet a właścicielem pliku. Uruchom aplikację, to działa dobrze.
źródło
W moim przypadku widok nie był wyświetlany w Xib. w xib Widok miał rozmiar = brak (4. karta po prawej stronie). Ustawiłem rozmiar na Freeform i ponownie załadowałem xCode. odwołano się od widoku i ustawiłem odpowiedni link do widoku.
źródło
Jeśli po wypróbowaniu wszystkiego nadal występuje ten błąd, spróbuj ponownie utworzyć plik klasy od zera, ale pamiętaj, aby zaznaczyć pole wyboru „Utwórz także plik XIB”. Spowoduje to automatyczne połączenie kilku elementów, które nie są połączone podczas tworzenia tych plików osobno. Po utworzeniu tego możesz prawdopodobnie wyciąć i wkleić wszystko do nowego XIB i powinno działać dobrze.
Ten problem znajduje się w szczególności w przypadku tworzenia plików osobno w Swift.
źródło
dla mnie to się stało, kiedy
UIView z tego ViewController musi zostać załadowany do innego widoku jako widok podrzędny,
nazwiemy coś takiego
Gdzie
Tutaj brakowało loadView ,,, dodanie tego wiersza rozwiązało mój problem.
źródło
Miałem ten sam problem, zorientowałem się i to dlatego, że zaznaczyłem „ Komórki statyczne ” we właściwościach widoku tabeli w opcji Treść . Działa, gdy zmieni się na „
Dynamic Prototypes
”. Zrzut ekranu znajduje się poniżej.źródło
Miałem podobny problem z Xcode 9.3 i naprawiłem to, ustawiając „Moduł” pod Inspektorem atrybutów „Właściciela pliku” dla modułu projektu.
źródło
Otwórz plik scenorysu , w którym istnieje twoja viewController, lub plik związany z XIB za pomocą textEdit.app i sprawdź, czy nazwa scenorysu lub nazwa XIB jest taka sama jak w viewController, a następnie zmień go, zapisz i ponownie załaduj / uruchom ponownie Xcode.
źródło
Jeśli używasz niestandardowej metody inicjowania, sprawdź, czy zwracasz coś ważnego. Natknąłem się na kod, który uderzył w coś takiego:
W innej klasie kontroler został utworzony w następujący sposób:
Problem polega na tym, że w metodzie init ja się nie zmieniło i powinno wyglądać następująco:
źródło
Chciałbym wesprzeć Stephena J. Czasami X Code po prostu się myli. Po prostu miałem doświadczenie, w którym często bawiłem się interfejsem użytkownika i dodałem i usunąłem gniazda kilka razy. Gniazdka po prostu nie będą już połączone. Nigdy nie wymyśliłem konkretnego powodu (wypróbowałem wszystkie powyższe rozwiązania) i po prostu musiałem usunąć NIB i odtworzyć go od zera, a tak naprawdę musiałem użyć innej nazwy dla NIB, zanim zadziała. (XCode 4.6.1) Zmarnowałem na to kilka godzin.
źródło