Ten błąd doprowadza mnie do szału, odkąd zacząłem używać Xcode (4.6.3). Za każdym razem, gdy próbuję połączyć element Storyboard z moim kodem, otrzymuję błąd:
Nie można znaleźć żadnych informacji dla klasy o nazwie ViewController.
Dzieje się tak również w przypadku klas niestandardowych. Wypróbowałem takie metody jak:
- Usuwanie danych pełnomocnika.
- Usuwanie i ponowne dodawanie klas.
- Ponowne uruchamianie Xcode.
- Ponowna instalacja Xcode.
Nie mogę przeciągać, przytrzymując klawisz Ctrl, aby tworzyć połączenia w żadnym z moich projektów, bez względu na to, jaka jest klasa. Ten sam problem występuje w przypadku zupełnie nowej aplikacji szablonu. Jeśli wpiszę kod ręcznie, a następnie przeciągnę klawiszem Ctrl, mogę nawiązać działające połączenie, ale nie mogę dodać go automatycznie. Nic, co dotychczas udało mi się znaleźć w Internecie, nie pomogło. Jakieś wskazówki?
NSLog()
doviewDidLoad:
Odpowiedzi:
Rozwiązaniem dla mnie było usunięcie klasy z projektu.
Kroki:
Wydaje się, że zmusza to Xcode do ponownego połączenia klasy z scenorysem.
Uwaga: u mnie nie działały:
Myślę, że to błąd po stronie Apple
źródło
Jeśli ktoś nadal jest tym sfrustrowany, jest pewien sposób, aby wszystko działało.
To, co robię, to ręczne wprowadzenie gniazdka do mojej klasy, na przykład:
@IBOutlet weak var someView: UIView!
i przeciągam z kodu do widoku w IB lub storyboardie. Następnie mogę przeciągnąć z IB / Storyboard do mojej klasy, aby nawiązać połączenia, redaktorzy asystenci rozpoznają klasę w trybie „Automatycznym” itp.Działa za każdym razem.
źródło
Dla mnie usunięcie ich z docelowego członkostwa w prawej kolumnie i dodanie ich ponownie załatwiło sprawę
źródło
Czasami Xcode to robi, ponieważ VC nie odwołuje się do pliku klasy. Prostym rozwiązaniem jest:
wpisz własność ręcznie, jak podano.
Spowoduje to utworzenie pustego znaku linku przed @IBOutlet , otwórz projekt w edytorze asystenta, a następnie kliknij znak łącza i przeciągnij do widoku, z którym chcesz się połączyć (połączyłem się z TableView). i to wszystko. Życzymy udanego kodowania !!!
źródło
Właśnie miałem ten problem w kwietniu 2017 z Xcode 8
Po prostu utworzenie gniazdka za pomocą kodu i skompilowanie go naprawiło. na przykład:
Musisz pokochać Xcode…
Edycja: nadal dzieje się na Xcode 9
źródło
Poniższe kroki działają dla mnie, mam nadzieję, że działa również dla Ciebie
1 - Musisz ponownie otworzyć projekt po zamknięciu Xcode.
2- Poczekaj na indeksowanie plików projektu
3- Sprawdź, czy to działa, czy nie
4- Jeśli nadal nie działa, wykonaj krok 5, jeśli nie jesteś zadowolony :)
5- Oczyść i zbuduj cel projektu
źródło
Próbowałem wszystkiego i nie udało się, więc dla mnie zadziałało:
Wszystkie moje kontrolery widoku nie zostały rozpoznane, więc usunięcie wszystkich plików i ponowne dodanie nie wchodziło w grę, ponieważ jest to duży projekt.
źródło
U mnie zadziałało:
Wykonaj „wyczyść” i „wyczyść folder kompilacji” (naciśnij „opcja” w menu Produkt, aby uzyskać polecenie „wyczyść folder kompilacji”)
Zatrzymaj Xcode
W terminalu przejdź do folderu danych pochodnych:
(/ Users // Library / Developer / Xcode / DerivedData)
Usuń katalog danych pochodnych dla swojego projektu.
Machaj w powietrzu martwym kurczakiem
Uruchom Xcode
źródło
Do tej pory musiałem wykonać kombinację kilku odpowiedzi:
(Kliknij żółty przycisk w lewym górnym rogu kontrolera widoku w scenorysie -> przejdź do inspektora tożsamości (opcja + polecenie + 3) -> usuń nazwę klasy niestandardowej u góry)
(Kliknij plik prawym przyciskiem myszy -> usuń -> usuń odniesienie)
(Kliknij prawym przyciskiem folder, w którym znajdował się plik -> „Dodaj plik do [projektu]”)
źródło
Jeśli ludzie spróbują powyższego, a rzeczy nadal nie działają, dziwną sztuczką, która zadziałała, było dodanie gniazdka w kawałku białej spacji. Działa, jeśli nie ma innych linii bezpośrednio nad lub pod linią, którą dodajesz. Dziwne, ale zadziałało!
źródło
U mnie zadziałało, zamiast przeciągać połączenie z przycisku do kodu, to:
po tym, jak połączyłem swój kod w ten sposób, od tej pory działał normalnie.
źródło
Trzymaj się celu!
Dodawałem nową klasę z Xib i zacząłem widzieć ten problem i spędziłem sporo czasu przeglądając odpowiedzi tutaj i sprawdzając, czy coś z tego miało na to wpływ.
Tak się składa, że mam wiele celów w moim obszarze roboczym i często muszę się między nimi przełączać.
Okazuje się, że dodanie nowych plików rozpocznie ponowne indeksowanie w Xcode. Ale jeśli wskazujesz na niewłaściwy cel, indeksowanie prawdopodobnie nie będzie miało znaczenia i podczas przeciągania w celu połączenia Xcode nie będzie w stanie znaleźć Twojej klasy.
W skrócie
Krok 1.
Upewnij się, że masz ustawiony prawidłowy cel, aby indeksowanie miało sens.
źródło
To zadziałało dla mnie:
(naciśnij i przytrzymaj klawisz „opcja” i przejdź do menu „ Produkt ”, aby uzyskać do niego dostęp.
Na marginesie, nie jestem pewien, czy to pomogło, ale przed wykonaniem powyższych czynności usunąłem również dane pochodne (preferencje Xcode> Lokalizacje)
źródło
Wybierz ViewController w storyBoard, usuń bieżącą wartość w panelu po prawej stronie / "Klasa klienta" / "klasa", a następnie ponownie dodaj klasę kontrolną (typ: "SampleViewController" ...), wprowadź. -> To działa dla mnie
źródło
Wypróbowałem wszystkie te odpowiedzi, problem był związany z tym, że Xcode nie mógł indeksować plików. Naprawiłem to, zamykając Xcode i ponownie otwierając projekt. Oczywiście zrobiłem to po wypróbowaniu wszystkich powyższych rozwiązań: str
źródło
Produkt> Wyczyść (Command - Shift - K) naprawił to dla mnie!
źródło
To NAJŁATWIEJSZY krok, który wykonałem, aby rozwiązać ten problem.
źródło
Z mojego doświadczenia w testowaniu wynika, że jeśli usuniesz klasę, która była skojarzona z Xcode, a następnie ponownie dodasz plik, wystąpi ten problem.
źródło
Zwykle, gdy mi się to przytrafia, po prostu nie zapisałem jeszcze kodu zajęć. Po prostu przeskocz do kodu i naciśnij cmd + s, co często rozwiązuje problem we właściwy sposób.
źródło
Wystarczy wyczyścić i ponownie zbudować projekt.
źródło
Żaden z powyższych kroków nie zadziałał, ale myślę, że mogłem wykryć problem. Przynajmniej to zadziałało i nie jest to błąd w Xcode.
W edytorze pomocniczym spójrz na górę okna, które zawiera kod dla Twojego elementu viewController. Trzecia opcja od prawej strony prawdopodobnie mówi „Ręcznie”, ale powinna brzmieć „Automatycznie”. Kiedy to zmieniłem, problem został rozwiązany!
źródło
Miałem podobny problem: „Nie mogłem znaleźć klasy o nazwie…”, a przyczyna była z mojej strony głupia, kiedy to odkryłem. Upewnij się, że nie przeciągasz z elementu do interfejsu - upewnij się, że jest on przeciągany do samej klasy
źródło
Próbowałem WSZYSTKIEGO!
Upewnij się, że nazwa klasy Twojego UIViewController nie zawiera słowa „Test”
Zgłoszenie błędu zostało przesłane.
źródło
Spróbowałbym przerobić te pliki .m i .h i nadać im oryginalną nazwę, a nie ogólną, taką jak „ViewController”. Spróbuj czegoś więcej na wzór tego, co chcesz zrobić w tym pliku, a kończąc na kontrolerze widoku (np. „PizzaDecoraterViewController”)
Następnie wybierz ViewController, który chcesz połączyć z tymi plikami. Upewnij się, że wybierasz ViewController, a nie tylko obiekt wewnątrz. Kliknij czarny pasek na dole (ten, na którym znajdują się ikony „Pierwsza pomoc” i „Wyjście”). Cały ViewController powinien mieć obrys niebieski. Następnie przejdź do sekcji Custom Class w Identity Inspector. W pierwszym polu powinien pojawić się wyszarzony „UIViewController”. W tym polu wpisz nazwę pliku .h lub .m, z którym chcesz się połączyć (zacznij pisać PizzaDecorator ... i powinno zrobić trochę autouzupełniania). Następnie naciśnij ENTER.
Po otwarciu Edytora asystenta upewnij się, że plik, do którego próbujesz przeciągnąć i upuścić, jest w rzeczywistości właściwym plikiem.
Jeśli zrobiłeś wszystko, co powiedziałeś powyżej, powinno działać.
źródło
Jak skomentowałem odpowiedź @ChrisHarrison, te rzeczy nie zadziałały dla mnie, ale usunięcie danych pochodnych, tak jak w przypadku, gdy je uruchomiłem, usuwając dane pochodne, jak na https://stackoverflow.com/a/16182672/1449799
źródło
Usuń pliki (tylko odniesienia) i ponownie dodaj pliki.
źródło
Cóż, w moim przypadku rzecz, która zadziałała (to trochę dziwne, ale zadziałała) jest następująca:
Spróbuj dodać źródło danych (np. Rozszerzenie do ViewController, takie jak UITableViewDataSource). Xcode spróbuje ponownie załadować ViewController. Następnie napisałem jakąś metodę protokołu (na początku Xcode nie uzupełniał metod autouzupełniania, tylko ręcznie), potem dodałem IBOutlets, a na koniec usunąłem źródło danych.
Przykład:
źródło
Dla mnie widok, dla którego określiłem niestandardową klasę, nie mógł zostać skompilowany przez kreatora interfejsu. To było zaznaczone
@IBDesignable
.Usunięcie
@IBDesignable
, a następnie dodanie moich gniazdek, a następnie oznaczenie go jako@IBDesignable
rozwiązało problem w moim przypadku.źródło
Po prostu spróbuj usunąć pochodne dane z projektu
źródło
po prostu spróbuj tego
źródło