Próbuję utworzyć końcówkę zawierającą widok, który zostanie osadzony w TableViewCell. Stworzyłem interfejs i pliki implementacji ResultCell.h
oraz ResultCell.m
. Są dostępne po wyjęciu z pudełka, bez zmian w kodzie.
Następnie tworzę pusty plik XIB i przeciągam na niego UIView. Następnie klikam opcję Właściciel pliku i ustawiam typ na ResultCell
. Klikam widok i ustawiam jego klasę na ResultCell
.
Oto problemy, które mam:
- Podczas korzystania z widoku edytora asystenta (w którym mieszkam)
ResultCell.h
plik nie pojawia się, gdy przeglądam plik ResultCell.xib. Muszę zmusić go do załadowania, klikając Automatycznie i wybierając plik. - Kiedy upuszczam etykietę w widoku, a następnie przytrzymuję klawisz Ctrl i klikam i przeciągam do .h, aby utworzyć gniazdo, pojawia się następujący komunikat o błędzie: „ Nie można wstawić nowego połączenia gniazdka: nie można znaleźć żadnych informacji o klasie o nazwie ResultCell. "
Próbowałem utworzyć i odtworzyć widok, ale po prostu nie działa i zacząłem tracić cierpliwość. Każda pomoc byłaby bardzo, bardzo doceniona!
Odpowiedzi:
Może to nie działać w przypadku konkretnego problemu, ale czasami pojawia się ten błąd podczas pracy z nowo utworzonymi końcówkami. Usunięcie i ponowne utworzenie końcówek i kontrolerów widoku o takich samych nazwach jak poprzednio nie rozwiązało problemu, ale ponowne uruchomienie Xcode tak.
źródło
~/Library/Developer/Xcode/DerivedData
)Właśnie dzisiaj doszedłem do podobnego stanu. To było bardzo dziwne: mogłem dołączyć dowolny XIB (nowy lub istniejący) do dowolnej już istniejącej klasy ViewController w projekcie, ale nie mogłem utworzyć nowego ViewController i podłączyć go poprawnie do żadnego XIB. Nie działała funkcja „asystenta”, ani funkcja połączenia między IB do pliku nagłówkowego.
Zamknięcie projektu i ponowne otwarcie tego nie rozwiązało.
Zamknięcie XCode i ponowne uruchomienie nie naprawiło tego.
Utworzenie nowego projektu i przetestowanie funkcjonalności działało dobrze, co doprowadziło mnie do wniosku, że gdzieś w jakiejś pamięci podręcznej jest coś uszkodzonego.
Moje rozwiązanie
Nawiasem mówiąc, samo przeprowadzenie pełnego czyszczenia nie wydawało się wyjaśniać sprawy. Musiałem skasować uzyskane dane. Jestem pewien, że dostałem się na tę pozycję z powodu gier git, w które grałem, ale nie miałem pojęcia, jak się z tego wydostać, ponieważ nawet powrót do wcześniejszych wersji gita nie pomógł. (To była również duża wskazówka, że sam projekt nie wyśledził tego).
źródło
Właśnie miałem ten problem i ponowne uruchomienie Xcode go nie naprawiło. Usunąłem pliki klas z projektu, a następnie dodałem je z powrotem i zaczęło działać.
źródło
Miałem ten sam problem. I próbowałem:
Nic z tego nie działało. Udało mi się po prostu:
I zrobione!
źródło
Jeśli ponowne uruchomienie Xcode nie działa, odkryłem, że przełączanie nowego pliku .m na zewnątrz i z powrotem do członkostwa docelowego działa.
źródło
To mi pomogło:
Jeśli nie widzisz „panelu”, spójrz na prawy górny róg okna i włącz odpowiednie przyciski „widoku”. Jeśli nie widzisz przycisków „widok”, kliknij znajdujący się najbardziej po prawej stronie przycisk kapsułki.
źródło
Zauważyłem, że plik .m został przeniesiony do folderu en.lproj.
Po prostu usuń (tylko jako odniesienie) plik .m z Xcode i przenieś .m z en.lproj. Dodaj go ponownie, to rozwiąże problem.
Nie martw się, odzyskasz wszystkie połączenia.
źródło
Dzisiaj napotkałem ten sam problem. Ponowne uruchomienie XCode nie rozwiązało problemu. Udało mi się dostać rzeczy wraca do normy za pomocą „Usuń” opcji „Odczytane dane” w projekcie , które można znaleźć pod Organizatora . Organizator mówi, że „dane pochodne obejmują indeks, dane wyjściowe kompilacji i dzienniki”. Wydaje mi się, że ten problem powodował indeks lub dane wyjściowe kompilacji .
źródło
w XCode przejdź do organizatora, kliknij projekt, kliknij usuń dane pochodne ... potem wyczyść projekt
źródło
W moim przypadku pomogło to zrobić "fałszywą zmianę" (tylko spacja) w odpowiednim pliku nagłówkowym.
źródło
UITableViewCell
UIView
na puste płótno, powinieneś przeciągnąćUITableViewCell
Za każdym razem, gdy chcesz wczytać nową komórkę, zadzwoń:
[[NSBundle mainBundle] loadNibNamed:nibName owner:controllerWithOutletToCell options:nil]
po załadowaniu użyj ogniwa i ustaw ivar / wylot na zero, gotowy do następnego obciążenia
są inne sposoby, ale jest to powszechne
źródło
Być może to, co zadziałało w moim przypadku, to ... (Xcode v4.5)
To nie zadziałało
Próbowałem kontrolować przeciąganie do definicji interfejsu mojego .h
@interface SearchViewController : UIViewController
@end
To zadziałało (może tak miało działać, wcześniej tego nie wiedziałem) Zobacz nawiasy otwierające i zamykające. Kontroluj przeciąganie i upuszczanie po zamkniętym nawiasie.
@interface SearchViewController : UIViewController { } @end
źródło
Podobny problem miałem z projektem napisanym w języku Swift.
Udało mi się skonfigurować IBOutlet w kodzie takim jak ten
@IBOutlet var foo: UIView?
a następnie połącz go z Interface Builder, przeciągając do małego kółka, które pojawiło się tuż obok linii kodu.
źródło
Żadne z powyższych obejść nie rozwiązało problemu ze złączem, więc odłożyłem projekt zwierzaka na półkę, dopóki nie natknąłem się na następujący wątek przepełnienia stosu:
https://stackoverflow.com/a/15873770/2846800
Pracowałem nad dużym projektem w poprzedniej wersji XCode i wyłączyłem indeksowanie. Po ponownym włączeniu indeksowania mój problem został rozwiązany:
defaults delete com.apple.dt.XCode IDEIndexDisable
Mogę teraz korzystać z funkcji D&D programu Interface Builder. Mam nadzieję, że to pomoże innym ...
źródło
Ten problem wydaje się być błędem Xcode, który skrada się głównie po zastąpieniu pliku nowym plikiem o tej samej nazwie. Wydaje się, że Xcode zachowuje odniesienie do starszego pliku o tej samej nazwie.
W każdym razie sposobem na naprawienie tego wydaje się być:
(Same kroki 1 i 2 naprawiły to za mnie.)
źródło
Jeśli skopiowałeś pliki z innego projektu, po prostu upewnij się, że zaznaczyłeś pole „Dodaj do celów”
źródło
Zmiana nazwy plików klas może spowodować odłączenie ich od XIB. Ta odpowiedź pomogła mi to odkryć:
Ctrl-przeciągnij z przycisku do metody nie działa. Xcode / Interface Builder
Sprawdź, czy Twoja klasa niestandardowa jest poprawnie ustawiona w Inspektorze tożsamości.
źródło
Podobny objaw, ale inna przyczyna.
Najwyraźniej uderzyłem w backspace, gdy fokus był na widoku asystenta, ponieważ jeden ze standardowych wierszy komentarza szablonu pliku przeszedł z // do /, co powoduje, że plik nie kompiluje się.
Naprawienie komentarza pozwoliło SDK przeanalizować plik, rozpoznać go jako UIViewController i dodać do wyjścia.
SO - jeśli masz ten problem, wykonaj kompilację lub analizę, aby sprawdzić, czy są błędy, które wymagają naprawy w pliku .h kontrolera widoku. WTEDY wypróbuj inne rozwiązania.
źródło
Może to być stary temat, ale na wypadek, gdyby ktoś miał ten sam problem w przyszłości, spróbuj usunąć powiązane pliki .xib, .h i .m i utwórz nowe. Dla mnie kontroler UIViewController w moim pliku .h nie był fioletowy, a nawet cofanie się i wpisywanie nie pomogło.
źródło
Po prostu umieść linię między @implementation a @synthesize. Większość odpowiedzi tutaj ma to wspólne. U mnie to zadziałało
@implementation @synthesize
źródło
Po prostu wypróbowałem tutaj wszystko i nic nie działało (używając programu Developer Preview dla Xcode 5).
Jedyną rzeczą, która zadziałała, było umieszczenie tej niekompletnej linii w moim pliku interfejsu:
@property (nonatomic, weak)
Z jakiegoś powodu dodawanie gniazd i działań metodą przeciągnij i upuść z pliku .xib działało potem dobrze.
źródło
Dla mnie czyszczenie lub usunięcie DerivedData rozwiązało problem.
Kilkakrotnie próbowałem usunąć i odtworzyć moją klasę UIViewController i ciągle napotykałem ten problem.
Następnie ponownie utworzyłem klasę UIViewController i nadałem jej inną nazwę. To rozwiązało problem.
źródło
Miałem ten problem i znalazłem rozwiązanie nie wymienione powyżej.
W moim przypadku mogłem zobaczyć, że coś jest nie tak w pliku .h klasy, ponieważ mój niestandardowy kontroler widoku nie rozpoznał klasy: UIViewController (był w kolorze czarnym, a nie fioletowym). Wszystkie inne kontrolery widoku niestandardowego miały: UIViewController w kolorze fioletowym.
w moim przypadku i prawdopodobnie w twoim przypadku musiałem dodać klasę do listy rozwijanej cele / fazy kompilacji / źródła kompilacji. Należy dodać .m. Były tam wszystkie inne pliki .m, ale nie ten.
Po dodaniu: UIViewController pojawił się na fioletowo i wszystko działało dobrze.
źródło
W moim przypadku mam wiele projektów z kilkoma innymi zależnościami. Próbowałem go rozwiązać, usuwając dane pochodne lub ponownie uruchamiając XCode, ale to nie zadziałało. W końcu wypróbowałem następującą metodę i działa:
Przejdź do celu> Buduj tylko architekturę docelową> i ustaw opcje debugowania i wydania na NIE.
Ustaw to dla wszystkich projektów w obszarze roboczym i skompiluj ponownie, aby upewnić się, że nie ma innych błędów. Może bez sensu, ale jakoś to zrobiło. Podczas kompilacji wystąpiły inne problemy, takie jak błędy konsolidatora i nie znaleziono symboli.
źródło
W przypadku pliku * .m tej klasy otwórz „Pokaż inspektora plików” i odznacz „Członkostwo docelowe” dla tego projektu, a następnie wykonaj Wyczyść (menu Produkt-> Wyczyść) i ponownie zaznacz „Członkostwo docelowe” dla tego projektu
źródło
Używając Swift, miałem podobny problem. Dowiedziałem się, że częścią problemu były dla mnie komentarze .
Wykorzystałem domyślny kontroler widoku, wykonałem w nim jakąś pracę, a następnie utworzyłem drugi kontroler widoku, kopiując cały pierwszy, rozcinając go tylko do viewDidLoad () i zmieniając nazwę klasy na TestViewController. Kompilacje działały, kod został wykonany. Wszystko było dobrze.
Kiedy poszedłem przeciągnąć UITextField w celu utworzenia gniazdka, nie pozwolił mi. Zauważyłem, że moje komentarze nadal mówiły „ViewController.swift”, więc zmieniłem tekst komentarza na „TestViewController.swift” i przebudowałem. Udało mi się podłączyć gniazdko!
Zastanawiam się, czy doszło do tego, że Indexer czytał komentarze, a także nazwy klas, i jakoś się pomylił.
źródło
Mam nadzieję, że to komuś pomoże.
Musiałem tylko usunąć wyprowadzony folder danych. Musisz kliknąć Okno -> Organizator -> Projekty -> Usuń pochodne dane
I PONOWNIE URUCHOM XCODE.
Powinieneś być gotowy do drogi!
źródło
Nowa klasa nie będąca częścią „DOCELU” jest prawdopodobnie główną przyczyną tego, o czym wspominają niektóre z tych odpowiedzi.
Podczas tworzenia nowej klasy kakao, domyślnie opcja dodawania nowej klasy do celu jest domyślnie zaznaczona, ale z jakiegokolwiek powodu nie powinno to być zaznaczone po naciśnięciu przycisku Zapisz, pojawi się ten problem.
Każde z tych obejść, które dodają nową klasę do celu aplikacji, będzie działać w celu rozwiązania problemu i jest czymś, co łączy wszystkie te „poprawki”.
Myślę, że XCode prawdopodobnie ma pewne błędy, które powodują, że nowy plik domyślnie NIE jest dodawany do głównego celu aplikacji. Poprawka sprowadza się do dodania „zepsutej” klasy do głównego TARGETU
źródło
W XCode 7.1 dodanie łącznika w innym punkcie mojego pliku źródłowego działało. Błąd, który otrzymałem, dotyczył jednej z moich zmiennych, tak jakby to była klasa (nie miał sensu). Błąd przestał występować, gdy dodałem złącze poniżej tej zmiennej zamiast nad nią.
źródło
Istnieje również inny powód tego problemu ... jeśli utworzyłeś nowy plik klasy kakao z szablonem innym niż ios ... może się zdarzyć ...
Rozwiązaniem byłoby usunięcie go i ponowne utworzenie z odpowiednim szablonem
źródło