Próbuję zintegrować Janrain Engage jako moduł niestandardowy z Appcelerator Titanium. Utworzyłem przykładowy moduł i przeciągnąłem folder JREngage do przykładowego modułu xcodeproj, jak wskazano w dokumentacji Jainrain.
Teraz daję polecenie kompilacji do tego projektu, następnie wykonuję, ./build.py
a na koniec wykonuję titanium run
polecenie. Uruchamia aplikację w symulatorze z pustym ekranem i natychmiast zawiesza się, generując następujący błąd.
Zakończenie aplikacji z powodu nieprzechwyconego wyjątku „NSInternalInconsistencyException”, przyczyna: „Nie można załadować NIB w pakiecie:„ NSBundle </ Users / abhilash / Library / Application Support / iPhone Simulator / 4.2 / Applications / CA167346-4091-4E16-B841-955D1D391713 / test.app> (załadowano) 'o nazwie' JRProvidersController ''
Dlaczego ten błąd mógł wystąpić?
W
Targets -> Build Phases
Upewnij się, że plik .xib został dodany
Copy Bundle Resources
, jeśli go nie ma, dodaj plik .xib.źródło
spróbuj dowiedzieć się wszystkiego
w swoim kodzie i upewnij się, że
XXXController
są wpisane poprawnieźródło
initWithNibName:bundle:
metodyMiałem ten sam problem (wyjątek „Nie można załadować NIB w pakiecie: ..”) po uaktualnieniu mojego xcode z 3.2 do 4.02. Podczas gdy wdrożenie mojej aplikacji z Xcode 3.2 działało dobrze, wywala się, a xcode 4 podnosi wyjątek wspomniany powyżej - ale tylko wtedy, gdy próbowałem wdrożyć w symulatorze IOS (v.4.2). Kierowanie na urządzenie IOS (v.4.1) działało również z Xcode 4.
Okazało się (po wielu godzinach desperackiego szperania), że przyczyną było prawie „ukryte” ustawienie w pliku .xib:
Odwiedź właściwości plików .xib w inspektorze plików: Właściwość „Lokalizacja” została ustawiona na „Względem grupy” dla wszystkich plików .xib. Zmieniłem to na „Względem projektu” i voila: wszystkie pliki .xib są teraz poprawnie ładowane w symulatorze IOS!
Nie mam pojęcia, jaki jest powód tego dziwnego zachowania Xcode4, ale może warto spróbować?
źródło
W moim przypadku było to bardzo dziwne (użyj storyboardu): Z jakiegoś powodu zmieniło się z "Nazwa bazowa pliku głównego storyboardu" na "Nazwa bazowa pliku głównego nib" w plist.
Zmiana z powrotem na „nazwę bazową pliku głównego storyboardu” (UIMainStoryboardFile) rozwiązała problem
źródło
błąd oznacza, że nie ma pliku .xib o
"JRProvidersController"
nazwie. sprawdź ponownie, czyJRProvidersController.xib
istnieje.można załadować
.xib file
zźródło
Używając niestandardowego widoku Swift w kontrolerze widoku Objective-C (tak, nawet po zaimportowaniu
<<PROJECT NAME>>-Swift.h
pliku), próbowałem załadować końcówkę za pomocą:... ale
NSStringFromClass([MyCustomView class])
wraca<<PROJECT NAME>>.MyCustomView
i ładowanie kończy się niepowodzeniem. TL; DR Wszystko działało dobrze podczas ładowania stalówki przy użyciu literału ciągu:źródło
Ponieważ celem kompilacji było jedno z moich urządzeń z systemem iOS, kliknąłem prawym przyciskiem myszy plik produktu (xyzw.app) i wybrałem wyskakujący element Pokaż w Finderze. Otworzył okno z plikiem xyzw.app w środku; Otworzyłem paczkę za pomocą opcji Pokaż zawartość pakietu i zobaczyłem wszystkie pliki, których się spodziewałem, z wyjątkiem jednego pliku, na który narzekał, z dużą literą I zamiast małej litery i w nazwie (zoomieVIew.nib zamiast zoomieView.nib ). Zauważyłem wielką literę I w nazwie pliku xib, zmieniłem go i odbudowałem; najwyraźniej Xcode pozostawił wygenerowaną nazwę .nib taką, jaka była. Usunąłem zoomieVIew.nib w pakiecie, odbudowałem i Xcode należycie odtworzyłem plik jako zoomieView.nib. Aplikacja zaczęła działać na urządzeniu.
źródło
Miałem ten problem z storyboardem i stalówka została nazwana czymś w rodzaju „bKD-J3-fhr-view-ZSR-8m-2da”.
Było tak, ponieważ próbowałem dodać podwidok do self.view w init kontrolera widoku (za pomocą Codera). Widok siebie jeszcze nie istnieje.
Przeniesiono go, aby wyświetlićDidLoad i wszystko lepiej!
źródło
Obejrzyj projekt
Target -> Buid Phases -> Copy Bundle Resources
Znajdziesz swój xib / storyborad w kolorze czerwonym.
Po prostu go usuń, a także wszystkie odniesienia do brakującego pliku z projektu.
Teraz ponownie przeciągnij ten plik storyboardu / xib do tego
Copy Bundle Resources
. Nadal będzie wyświetlać plik w kolorze czerwonym, ale nie martw się o to.Po prostu wyczyść i zbuduj projekt.
Teraz Twój projekt będzie znowu działał pomyślnie !!
źródło
Dla Storyboard
Wypróbowałem każde opublikowane tutaj rozwiązanie, ale nic nie działało, ponieważ używam Storyboard with Swift 5.
Właśnie zacząłem budować nowe kontrolery i widoki w aplikacji testowej scenorysu, stwierdziłem, że brakuje mi identyfikatora Storyboard My View Controller.
Oto moje rozwiązanie, jeśli chcesz przejść z ViewController A -> View Controller B
Krok 1. W scenorysie: Upewnij się, że ViewControllerA jest osadzony w kontrolerze nawigacji
Krok 2. W scenorysie: Teraz sprawdź , czy wspomniałeś o identyfikatorze scenorysu dla swojego ViewControllerB, którego użyjesz w kodzie jako identyfikatora.
Krok 3. i na koniec upewnij się, że wciskasz kontroler w ten sposób w swoim ViewControllerA za pomocą przycisku.
źródło
NIE WKŁADAJ .xib PODCZAS WSTAWIANIA NAZWY XIB! JUŻ JUŻ DOROZUMIANE!
Nie rób tego:
Zrób to:
źródło
Przykład Swift4, jeśli Twoje MyCustomView.swift i MyCustomView.xib w frameworku. Umieść to w init MyCustomView :
źródło
Zauważyłem również, że nie powiodło się, gdy próbowałem załadować XIB o nazwie takiej jak @ „MyFile.xib”. Kiedy właśnie użyłem @ "MyFile", zadziałało - najwyraźniej zawsze dodaje rozszerzenie. Ale komunikat o błędzie informował właśnie, że nie można znaleźć MyFIle.xib w pakiecie - gdyby był napisany MyFile.xib.xib, byłaby to duża wskazówka.
źródło
Pracując na Xcode 4.6.3 i lokalizując moje pliki NIB, również napotykam ten problem.
Dla mnie nic innego nie pomogło poza zmianą "Wersjonowania dokumentów" w File Inspector na Deployment 5.0 zamiast 6.1.
źródło
Dzieje się tak, gdy zmienisz nazwę pliku nib. Jeśli masz już końcówkę, utwórz nową końcówkę (czyli skopiuj zawartość bieżącego pliku końcówki do nowej końcówki), usuń stary plik końcówki, a to rozwiąże problem.
Edycja: Z nową wersją Xcode od 4.6.3, jeśli zmienisz nazwę (z funkcją refaktoryzacji) klasy kontrolera, zmieni się również nazwa pliku nib i nie musisz się martwić o problem z ładowaniem końcówki.
źródło
Właśnie miałem ciekawe doświadczenie z Xcode 6.3.
Ciągle otrzymywałem ten błąd, mimo że próbowałem wszystkiego, o czym normalnie pomyślałeś, z pisownią, członkostwem docelowym itp., Jak zasugerowano powyżej. Próbowałem również kilkakrotnie wyczyścić, usunąć dane pochodne, a także usunąć aplikację z symulatora, aby upewnić się, że pakiet został poprawnie zbudowany, ale bezskutecznie.
Wreszcie, podążając za odpowiedzią Briana Michaela Bentleya, w końcu zdecydowałem się sprawdzić mój plik .app w folderze mojego symulatora na moim HD. Okazało się, że były tam wszystkie moje stalówki, ale z abc ~ ipad.nib zamiast oczekiwanego abc.nib. Ręcznie zmieniłem nazwy wszystkich tych plików, aby usunąć część ~ ipad, zbudowałem i zadziałało!
Próbując zobaczyć, dlaczego zostały one dodane ze słowem kluczowym ~ ipad, przyjrzałem się ustawieniom projektu i faktycznie, na karcie Ogólne> Informacje o wdrożeniu wybrałem tylko iPada. Próbowałem uruchomić na symulatorze iPhone'a. Uważam, że w przeszłości Xcode dawał błąd wskazujący, że plik binarny nie obsługuje iPhone'a i nie udałoby się uruchomić aplikacji.
Usunąłem aplikację z symulatora i ponownie zrobiłem to samo - znowu z obsługą tylko iPada. Tym razem .app zawierał abc ~ iphone.nib ORAZ abc ~ ipad.nib dla każdego oczekiwanego storyboardu i działał dobrze na symulatorze iPhone'a. Ponownie - jeśli wybierzemy iPada tylko w naszych ustawieniach informacji o wdrożeniu, nie powinien on działać na iPhone Simulator. To jest błąd Xcode.
Tak więc występuje tutaj niespójne zachowanie ze strony Xcode i niestety jest to błąd sporadyczny i może to być trudne do odtworzenia, ale umieściłem to tutaj, aby pomóc innym w przyszłości.
źródło
Gdyby ten sam problem nie działał, doszedłem do czegoś dziwnego z danymi pochodnymi.
W xcode 6.3.2 musiałem:
W menu XCode -> Preferencje -> zakładka Lokalizacje -> W lokalizacjach Zmień pochodne dane na względne, a następnie przełącz z powrotem na domyślne
Następnie stalówka załadowana dobrze.
źródło
Twój plik XIB prawdopodobnie znajduje się poza folderem projektu. Prowadzi to do niewyświetlania docelowego Inspektora. Jednak przeniesienie pliku XIB do folderu projektu powinno rozwiązać ten problem.
źródło
Uważaj: Xcode rozróżnia wielkość liter w nazwach plików. To nie ta sama „zabawa”, co „zabawa”.
źródło
Jeśli używasz frameworków w swoim projekcie, musisz upewnić się, że ładujesz z odpowiedniego pakietu:
źródło
dla mnie rozwiązało to po prostu zmieniając nazwę pliku mojej komórki na taką samą, jak jej klasa.
W Inspektorze atrybutów (trzecia zakładka na prawym pasku bocznym w scenorysie):
Zarejestruj komórkę w kontrolerze widoku w następujący sposób:
tableView.register (UINib (nibName: "MyCellClass", bundle: nil), forCellReuseIdentifier: "MyCellId")
źródło
Mam ten problem podczas przekształcania mojego starego kodu z XCode 3x na XCode 4 i rozwiązałem go, zmieniając nazwę wwwwwwww.xib na RootViewController.xib
źródło
Napotkałem ten sam problem. W moim przypadku końcówka nosiła nazwę „MyViewController.xib” i zmieniłem jej nazwę na „MyView.xib”. Pozwoliło to wyeliminować błąd.
Przenosiłem też projekt z XCode 3 na 4.2. Zmiana typu ścieżki nie miała znaczenia.
źródło
Przyczyną może być również to, że plik jest wyszukiwany w folderze określonego języka, gdy pomieszałeś z lokalizacjami.
źródło
Za każdym razem, gdy refaktoryzuję nazwę kontrolera widoku, która jest w mojej aplikacjiDelegate, tracę na to czas. Refaktoryzacja nie zmienia nazwy końcówki w initWithNibName: @ "MYOldViewControllerName".
źródło
Miałem ten sam problem, zmiana nazwy mojego identyfikatora kontrolera widoku w scenorysie działała dla mnie.
źródło
Zauważyłem, że może się to zdarzyć, jeśli przełączysz się między gałęziami w git i zapomnisz wyczyścić. Więc xib jest tam i wszystko jest znalezione, ale dokładna kompilacja może mieć problemy. Więc na wszelki wypadek nie zapomnij wyczyścić
źródło
W powyższym kodzie, jeśli podasz również rozszerzenie pliku, takie jak „SecondView.xib”, oznacza to, że jest ono nieprawidłowe i wyświetli powyższy błąd. Zamiast tego użyj „SecondView”. Popełniłem ten błąd.
źródło
To działa dla mnie ... Upewnij się, że poprawnie wpisałeś nazwę stalówki.
[[NSBundle mainBundle] loadNibNamed: @ "Graphview" właściciel: opcje własne: nil];
Graphview (nazwa końcówki)
źródło