To ostrzeżenie występuje w Xcode 6.1. Czy ktoś ma pomysł, co oznacza to ostrzeżenie i co się z nim stanie? Wielkie dzięki!
Poniżej znajduje się zrzut ekranu z ostrzeżeniami otwartymi w kodzie źródłowym "
Jak sprawdzić, które ograniczenie powoduje ostrzeżenie? Xcode nie informuje, które ograniczenie jest przyczyną problemu.
ios
xcode
cocoa-touch
storyboard
xcode6
Zhihao Yang
źródło
źródło
Odpowiedzi:
To ostrzeżenie może być denerwujące i występuje od wersji Xcode 6.1.1. Główny problem polega na tym, że nie można łatwo znaleźć powiązanego ograniczenia, klikając ostrzeżenie. Myślę, że jest to błąd i prędzej czy później zostanie naprawiony.
Jednak w międzyczasie możesz skorzystać z tego małego obejścia:
Krok 1: Wykryj irytujące ostrzeżenie 😱
Krok 2: Kliknij prawym przyciskiem
Reveal in Log
myszy / Ctrl-Kliknij ostrzeżenie, wybierz 😨Krok 3: Podziwiaj piękno następującego fragmentu dziennika:
Hmmm ... Co to jest ...?
Krok 4: Wrzućmy to do paska wyszukiwania projektu ... 😐
😮 Tak, zgadłeś. Kliknij to.
Krok 5: 😁 OMG! Ciesz się kilkoma dodatkowymi minutami produktywności, dopóki Apple nie naprawi tego irytującego błędu. 😎
Na rok 2016 ...
Zwróć uwagę, że w przypadku Xcode z 5/2016 irytująco musisz zamknąć i ponownie uruchomić Xcode, aby w niektórych przypadkach usunąć to ostrzeżenie.
Zauważ, że myląco ten sam błąd może być spowodowany przez niepowiązany problem (wydaje się, że jest to błąd Apple lub słabe użycie języka błędów): jeśli masz
IBInspectable
elementy i zdarza się, że zmieniasz ich nazwy w plikach Swift. Xcode nie usuwa starej nazwy UserDefinedRuntimeAttributes za Ciebie. Po prostu kliknij „Identity Inspector” (pozycja 3 na prawym panelu) i usuń niewypełnione elementy.Na rok 2017 ...
źródło
Ten komunikat jest wyzwalany, gdy dezaktywujesz widok w swojej serii ujęć, ale nie dezaktywujesz ograniczeń opartych na tym widoku.
Na przykład dezaktywowałeś przycisk, ale nadal masz pewne ograniczenia powiązane z tym przyciskiem. Może to być wewnętrzne ograniczenie, takie jak wysokość lub szerokość, lub względne ograniczenie, takie jak odległość od innego widoku.
Musisz wyłączyć każde z ograniczeń odnoszących się do widoku i musisz to zrobić ręcznie. Xcode jest tutaj zbyt konserwatywny i nie zrobi tego za Ciebie.
źródło
To rozwiązanie działa na mnie.
Ponieważ skopiowałem kilka elementów z projektu, który opracowałem w Xcode 5 do Xcode 6, a storyboard w Xcode 6 obsługuje wiele układów, dla każdego ograniczenia muszę go zainstalować w bieżącej konfiguracji.
Na przykład używam opcji „Kompaktowa szerokość | Regularna wysokość”, dla ograniczenia, które muszę ustawić, jak poniżej:
Po sprawdzeniu i ustawieniu wszystkich setek ograniczeń w moich projektach, wyczyszczeniu i zbudowaniu, ostrzeżenia w końcu znikają.
źródło
Installed
w atrybutach obiektu widoku są również te nieznośne pola wyboru. Dlatego upewnij się, że obiekty widoku, które Twoim zdaniem są wyświetlane, mają zaznaczone odpowiednie pole wyboru. Ostrzeżenie informuje, że niektóre obiekty nie są wyświetlane wcurrent configuration
.Chciałem tylko dodać moją sprawę, w jaki sposób ten błąd się wydarzył: w moim przypadku chciałem usunąć pole tekstowe za pomocą „Cmd + Backspace”. Zrobiłem to bezpośrednio w widoku drzewa programu Scene-Builder:
Jak widać, pole drzemki jest wyszarzone.
Więc było to dla mnie łatwe do odkrycia. Możesz po prostu naprawdę usunąć pole, wybierając:
Edycja-Usuń z menu
Zaskakujące - to naprawdę usuwa pole (w tym ograniczenia). Może to pomoże komuś łatwo znaleźć przyczynę tego irytującego Ostrzeżenia ...
źródło
Rozszerzone wyjaśnienie
Nie ma nic złego w innych odpowiedziach. Chciałem tylko zwrócić uwagę na sformułowanie w oryginalnym ostrzeżeniu i zidentyfikować kilka przypadków użycia, w których może to pojawić się w przepływie pracy.
Oznacza to, że jakiś element (zwykle kontrolka lub widok niestandardowy, który jest normalnie widoczny), do którego odwołuje się jedno lub więcej ograniczeń, jest wyłączony (wyłączony lub ma niezaznaczone pole wyboru „zainstalowane”). Jeśli na przykład zdecydujesz, że chcesz przenieść kontrolkę lub widok w swoim storyboardzie poza widok główny (lub czasami możesz zobaczyć, robiąc coś interesującego w klasach wielkości), możesz zobaczyć to ostrzeżenie, jeśli kontrolka ma dołączone do niej ograniczenia .
Wraz z zalecanym rozwiązaniem:
Dwa podejścia do naprawy
Zarys dokumentu
Wizualnie możesz otworzyć konspekt dokumentu w swoim scenorysie i poszukać wyszarzonych wiązań, które odnoszą się do twojego elementu sterującego / widoku poza głównym widokiem (poszerz kontur, kliknij ograniczenie i wyświetl inspektora atrybutów, przesuń mysz w dół, aby szybko przejrzeć) . Następnie usuń ograniczenie z tego kontekstu (klasa wielkości). Na przykład w moim przypadku po prostu trzymam kontrolę, dopóki nie zdecyduję, gdzie ją zaprezentować, więc zdecydowałem się całkowicie usunąć obrażające ograniczenie na później. Ale w klasie wielkości po prostu odinstalowałbym ograniczenie z bieżącego kontekstu za pomocą zainstalowanego pola wyboru w inspektorze atrybutów.
Log Navigator / Find Tool
Można również nadal używać nawigatora dziennika, aby znaleźć kontrolę problemu za pomocą unikalnego identyfikatora nadanego każdemu obiektowi w serii ujęć. W dzienniku byłoby to tuż przed zaznaczonym na żółto tekstem i zwykle przyjmuje postać, jak widać w moim przykładzie powyżej: jvj-mY-DHf
Korzystając z identyfikatora, można następnie użyć narzędzia wyszukiwania w Xcode, aby zlokalizować i usunąć (całkowicie) lub odinstalować (dla bieżącego kontekstu) naruszające ograniczenie.
Jeśli lubisz XML i jego prostotę, możesz po prostu otworzyć Storyboard jako kod źródłowy i znaleźć naruszający unikalny identyfikator i usunąć odpowiedni blok xml.
źródło
Jednym z powodów, dla których może się to zdarzyć, jest wybranie klasy rozmiaru niezgodnej z Twoimi ograniczeniami (
wAny hAny
jest to częsty przypadek). W takim przypadku po prostu wybierz inną klasę rozmiaru w Interface Builder i gotowe.źródło
U mnie dzieje się tak, gdy ustawię dla obiektu nowe ograniczenie do obiektu (nie widoku) bez zaznaczonej opcji „Ograniczenie do marginesów”. Problem rozwiązany przez zaznaczenie opcji (która jest domyślna).
źródło
To, co zadziałało dla mnie (i nie mam pojęcia dlaczego), to wyłączyć „Użyj wariacji cech”, a następnie przeprowadzić czyszczenie, a następnie włączyć je ponownie. Następna kompilacja nie miała żadnych ostrzeżeń.
Aby wyłączyć opcję „Użyj odmian cech”, po prostu wybierz scenorys w Nawigatorze projektu, a następnie wybierz Inspektor plików.
Następnie po prostu odznacz „Użyj wariacji cech”, wykonaj czyszczenie, naciskając Shift-CMD K, a następnie włącz ponownie wariacje cech, jeśli chcesz ich użyć.
źródło
Myślałem, że to utrzymujące się ograniczenie z powodu innej odpowiedzi, jednak było to spowodowane „gniazdem”, które nadal miałem dla elementu, który wcześniej usunąłem. Co należy zrobić:
W najgorszym przypadku usuwasz wszystkie gniazdka i po prostu podłączasz je ponownie. Sprawa została rozwiązana!
źródło
Jak wspomniano i dobrze kierowałem się odpowiedzią @ BadCat , poszedłem w dół i tylko jeden krok, który odważyłem się zrobić!
Kroki do wykonania po ostatnim kroku odpowiedzi BadCats:
Krok 1:
Wybrałem ograniczenie w programie Interface Builder, pamiętając o tym, do czego ono służy, a następnie je usunąłem.
Krok 2
Zbuduj projekt XCode i pokaże, że liczba ostrzeżeń może zostać zwiększona. Dzieje się tak, ponieważ usunąłeś ograniczenie, które musi się dobrze skompilować. Więc przejdź do 3 kroku!
Krok 3
Ponownie dodaj ograniczenie, o którym pamiętałeś (to, które usunąłeś). A potem odbuduj go ponownie!
Dla mnie ostrzeżenia zniknęły, robiąc to! Myślę, że to zadziała dla niektórych ludzi!
Przyczyna:
Ponieważ mogłem zrozumieć, że problem spowodowany tym ostrzeżeniem był taki, że miałem etykietę podłączoną do IBOutlet, ale jej nazwa zaczynała się wielką literą. Więc zmieniłem jego nazwę za pomocą prostej litery w ViewController i przyszedłem zmienić to w IB. Usunąłem poprzedni IBOutlet i poszedłem połączyć go z nowo zmienioną nazwą właściwości i podłączyłem. Wtedy zauważyłem, że pojawiło się nowe ostrzeżenie.
Najpierw spróbowałem następującej odpowiedzi w tym wątku, ale to nie pomogło!
Twoje zdrowie!
źródło
Mój przypadek to wybierz etykietę, a następnie kliknij control + X, zostanie wyłączony, ale nic z tym nie robię. Kiedy buduję, pokaże ostrzeżenie. Rozwiązanie: usuń etykietę lub usuń wybraną kontrolkę + X dla etykiety.
źródło
Usuwam wszystkie te elementy interfejsu użytkownika, w tym ich ograniczenia, i dodaję je wszystkie ponownie, te ostrzeżenia po prostu znikają. W każdym razie jest to najgorszy, ale użyteczny sposób rozwiązania tego problemu.
źródło
Miałem problem na widoku stosu. Usunięcie ograniczeń i ponowne ich dodanie nie pomogło. Czyszczenie i odbudowa nie pomogły.
Dla mnie rozwiązaniem było utworzenie zupełnie nowego obiektu widoku stosu.
Następnie przenieś wszystkie elementy ze starego widoku stosu do nowego widoku stosu.
Usunięcie starego widoku stosu rozwiązało problem.
źródło