2012-09-25 13 views
13

Jestem nowy w Xcode i mam problemy z awarią IDE, gdy używam Konstruktora interfejsu. To jest Xcode 4.5.Konstruktor interfejsu Xcode ulega awarii podczas edytowania storyboardu

To działało poprawnie przez wystarczająco długi czas, aby dodać kilkanaście przycisków do scenorysu - ale gdy próbuję zmienić dowolną z nich, powoduje awarię i kończy działanie. Jeśli przesuniemy przycisk, ulegnie awarii. Jeśli dodaję nowy obiekt, taki jak etykieta, to czasami ulega on awarii, ale nie zawsze.

Jeśli nie będę próbował edytować storyboardu, projekt zostanie zbudowany i uruchomiony na symulatorze bez żadnych problemów.

Wkleiłem to, co wygląda jak odpowiednia część raportu awarii poniżej. Aby zaoszczędzić miejsce, usunąłem wszystko z "hierarchii widoku" w dół, ale mogę je dodać, jeśli jest użyteczne. Wszystkie raporty o awariach odnoszą się do tego samego błędu.

Co ciekawe, kiedy patrzę w dzienniku konsoli jest inny raport z interfejsu Builder przed każdym z tych wypadków:

25/09/2012 10:46:35.661 Interface Builder Cocoa Touch Tool: CFPreferences: 
user home directory at file://localhost/Users/me/Library/Application Support/ 
iPhone Simulator/User/ is unavailable. User domains will be volatile. 

To poprawna - że katalog nie istnieje. Mam iPhone Simulator/6.0, ale nic więcej. Jestem zalogowany jako użytkownik w tej ścieżce.

Opierając się na innych sugestiach dotyczących Stack Overflow i innych, próbowałem wyczyścić kompilację, a następnie usunąłem cały katalog symulatora iPhone'a i pozwoliłem symulatorowi odtworzyć go, ale to nie ma znaczenia.

W ramach eksperymentu właśnie utworzyłem nowy projekt i przeciągnąłem przyciski i etykiety do storyboardu. Wydaje się to w porządku. Bez awarii.

Czy to sugeruje, że coś jest uszkodzone w moim drugim projekcie?

Wszelkie sugestie będą mile widziane. To nie jest ważny projekt - uczę się na tym etapie - ale jeśli coś powoduje problemy, to chcę to rozwiązać, zanim zacznę poważną pracę w Xcode.

Z góry dziękuję.

James

Process:   Xcode [650] 
Path:   /Applications/Xcode.app/Contents/MacOS/Xcode 
Identifier:  com.apple.dt.Xcode 
Version:   4.5 (1839) 
Build Info:  IDEApplication-1839000000000000~3 
App Item ID:  497799835 
App External ID: 10747437 
Code Type:  X86-64 (Native) 
Parent Process: launchd [129] 

Date/Time:  2012-09-25 10:46:43.202 +0100 
OS Version:  Mac OS X 10.7.5 (11G56) 
Report Version: 9 

Crashed Thread: 0 Dispatch queue: com.apple.main-thread 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 

Application Specific Information: 
ProductBuildVersion: 4G182 
ASSERTION FAILURE in /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-1926/IBPlugin/Utilities/IBObjectMarshalling.m:651 
Details: Failed to arbitrate IBNSLayoutConstraint, IBUIButton, IBUILabel, IBUIView, and IBUIViewController. 

Interface Builder encountered an error communicating with the iOS Simulator. If you choose to file a crash report or radar for this issue, please check Console.app for crash reports for "Interface Builder Cocoa Touch Tool" and include their content in your crash report. 

Exception name: IBAssertionFailure 
Exception reason: ASSERTION FAILURE: 
Reason:  All views needing candidate constraints have already had constraints generated. This most likely indicates a bug involving layout of the following views: 
Layout engine frame ({{20, 60}, {282, 57}}) of <UILabel: 0xb36f590; frame = (20 60; 281 57); text = '0'; clipsToBounds = YES; opaque = NO; autoresize = TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xb36f620>> does not match canvas frame ({{20, 60}, {281, 57}}) 
Layout engine frame ({{236, 328}, {66, 43}}) of <UIRoundedRectButton: 0xb384590; frame = (236 328; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb384660>> does not match canvas frame ({{236, 328}, {65, 43}}) 
Layout engine frame ({{236, 124}, {66, 43}}) of <UIRoundedRectButton: 0xb38ea10; frame = (236 124; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb38eae0>> does not match canvas frame ({{236, 124}, {65, 43}}) 
Layout engine frame ({{236, 175}, {66, 43}}) of <UIRoundedRectButton: 0xb390a30; frame = (236 175; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb36e8e0>> does not match canvas frame ({{236, 175}, {65, 43}}) 
Layout engine frame ({{236, 226}, {66, 43}}) of <UIRoundedRectButton: 0xb392a90; frame = (236 226; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb392b60>> does not match canvas frame ({{236, 226}, {65, 43}}) 
Layout engine frame ({{236, 277}, {66, 43}}) of <UIRoundedRectButton: 0xb394b70; frame = (236 277; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb394c40>> does not match canvas frame ({{236, 277}, {65, 43}}) 

Odpowiedz

15

Aktualizacja: Dalsze eksperymenty wykazały wyboru 'użytkowania autoLayout' dla ujęć. Wyłączenie tego, a następnie zapisanie pliku, prawdopodobnie rozwiązało problem. Mogę edytować dowolnie, bez żadnych awarii.

+0

Mam ten sam problem i wydaje się, że jest to identyczna awaria, ale nie używam scenorysu. Gdzie zaznaczyłeś "Użyj autouczekania" na swoim scenorysie? Czy to pole wyboru jest gdzieś indziej? Dzięki –

+0

Kiedy to się psuje? Czy Twoja aplikacja ma (pusty) storyboard z jakimś widokiem? To pole wyboru znajduje się w prawym panelu inspektora Interface Builder. Wyłączenie ** off ** jest tym, co naprawiło mój problem. Daj mi znać, jeśli nie możesz go znaleźć, a dodam zrzut ekranu. Powodzenia. – James

+1

Zawiesił się podczas edycji .xib w pojedynczej aplikacji widoku; Po prostu musiałem odznaczyć opcję "Użyj Autolayout" dla Xib, tak jak sugerowałeś, dzięki –

1

Problem ten prawdopodobnie ma coś wspólnego z obecnie dwie różne wielkości iPhone Retina Display (3.5" i 4") oraz w jaki sposób oddziałuje z widokiem na Mode: przeskalować do wypełnienia i może autoSize subviews, a także - - oba są domyślnie włączone.

Na przykład w moim przypadku miałem 4 "rozmiar głównego ekranu siatkówki z mocno zapakowanymi widokami przycisków, ale emulator był ustawiony na 3.5 wyświetlacz siatkówki, ponieważ widoki mojego przycisku miały rozmiar 43x43px i były rozmieszczone tuż obok siebie To spowodowałoby, że pozycje przycisków automatycznie zmniejszały skalę w taki sposób, że zachodziły na siebie, kiedy ich pozycje były dostosowane do ekranu 3,5 "(Skala do wypełnienia o mniejszej przestrzeni) - ponieważ nie mogły się skurczyć W rozmiarze. Takie nakładanie się widoków prawdopodobnie spowoduje problemy w systemie automatycznego układania. Dlatego myślę, że katastrofa.

Bez wątpienia będzie to także powód do komunikacji z emulatorem w raporcie o awariach, mimo że pracujemy tylko w programie Interface Builder, który wcześniej nie wydawał się intuicyjny.

+0

Uzgodnione. Co jest jednak dziwne, to że wyłączenie automatycznego układu powoduje naprawienie awarii, później ponowne włączenie ** nie powoduje, że problem wraca **. Dziwny. Czy próbowałeś tego ze swoim? Pozostawiłem go włączonym bez dalszych problemów - co powoduje, że myślę, że coś jest uszkodzone. – James

2

Gdy pliki XIB są w różnych formatach, ale wszystkie są w tym samym projekcie, stanie się to. W moim przypadku, niektóre pliki XIb były kompatybilne xcode5 dp, ale inni byli dla Xcode 4.6

Celem tutaj jest szukanie różnic w plikach XIb

Nadzieja to pomaga ludziom w przyszłości!

+1

Dzięki, to chyba naprawiło mój problem. –

1

Mam ten błąd również, dla mnie problem był TableView, który miał pewne ograniczenia. Po usunięciu wszystkich ograniczeń błąd przestał się pojawiać.

Powiązane problemy