2012-09-25 5 views
13

Я новичок в Xcode, и у меня возникают проблемы с сбоем IDE при использовании Interface Builder. Это Xcode 4.5.Xcode Interface Builder падает при редактировании раскадровки

Он работал должным образом, чтобы я мог добавить дюжину или около того кнопок в раскадровку - но когда я пытаюсь изменить размер любого из них, он падает и уходит. Если я нажму кнопку, она сработает. Если я добавлю новый объект, например метку, то иногда сбой, но не всегда.

Если я не пытаюсь редактировать раскадровку, проект строит и запускается на симуляторе без проблем.

Я вставил, что похоже на соответствующую часть отчета о сбое, приведенного ниже. Чтобы сэкономить место, я удалил все из раздела «иерархия представлений» вниз, но могу добавить его, если это полезно. Все отчеты о сбоях относятся к одной и той же ошибке.

Интересно, что когда я смотрю на журнал консоли, есть еще один отчет от Interface Builder перед каждым из этих аварий:

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. 

Это правильно - что каталог не существует. У меня есть iPhone Simulator/6.0, но больше ничего. Я зарегистрирован как пользователь в этом пути.

Основываясь на других предложениях по переполнению стека и в других местах, я пробовал очистить сборку, а затем удалил весь каталог iPhone Simulator и позволил симулятору воссоздать его, но это не имеет никакого значения.

В качестве эксперимента я только что создал новый проект и перетащил несколько кнопок и меток в раскадровку. Это кажется прекрасным. Никаких сбоев.

Означает ли это, что что-то испортилось в моем другом проекте?

Любые предложения были бы очень желанными. Это не важный проект - я изучаю свой путь на этом этапе, но если что-то вызывает проблемы, я хочу разобраться, прежде чем начать серьезную работу в Xcode.

Заранее спасибо.

Джеймс

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}}) 

ответ

15

Update: Дальнейшие эксперименты показали, флажок 'Использовать Autolayout' для раскадровки. Если вы отключите его, то сохранение файла, похоже, устранило проблему. Я могу редактировать по своему желанию, без каких-либо сбоев.

+0

У меня возникла такая же проблема и кажется идентичным сбой, но я не использую раскадровку. Где вы проверили «Использовать автоспуск» на вашем раскадровке? Или это флажок где-то еще? Спасибо –

+0

Когда он падает? У вашего приложения есть (пустая) раскадровка с каким-то видом? Флажок находится в правой панели инспектора Interface Builder. Отключение ** ** - это то, что исправило мою проблему. Дайте мне знать, если вы не можете найти его, и я добавлю экранный захват. Удачи. – James

+1

Сбой при редактировании .xib в одном приложении; Мне просто нужно было снять флажок «Использовать Autolayout» для xib, как вы предложили, спасибо –

1

Эта проблема, вероятно, что-то делать с теперь два разных размеров iPhone Retina дисплеев (3.5" и 4"), и как это взаимодействует с Mode представлен вид в: Scale Заполнить и, возможно, Autosize подвиды, также - - оба из них включены по умолчанию.

Например, в моем случае у меня был 4 "сетчатый размер MainView с плотно упакованными представлениями кнопок. Но эмулятор был настроен на 3,5 экрана сетчатки. Поскольку мои представления кнопок были всего 43x43px и располагались рядом друг с другом , это приведет к тому, что позиции кнопок будут автоматически уменьшаться по шкале таким образом, чтобы они перекрывались, когда их позиции были отрегулированы для 3,5-дюймового дисплея (Scale To Fill a меньше) - так как они не могли сжиматься в размере. Такое перекрытие представлений, похоже, создает проблемы в системе автоматического макета. Следовательно, крушение, я думаю.

Это также, несомненно, будет связано с тем, что существует некоторая ссылка на связь с эмулятором в отчете о сбое, хотя мы работаем только в интерфейсе Builder, который ранее не казался интуитивным.

+0

Согласен. Однако особенность заключается в том, что при выключении автоматической компоновки исправление сбоя снова включается снова ** не приводит к возврату проблемы **. Странный. Вы пробовали это с вашей? Я оставил его включенным без каких-либо дополнительных проблем, что заставляет меня думать, что что-то было коррумпированным. – James

2

Когда xib-файлы находятся в разных форматах, но все они находятся в одном проекте, это произойдет. В моем случае, некоторые XIB файлы были совместимы для xcode5 дпа, но другие были для Xcode 4.6

объекта здесь, чтобы искать различия в XIb файлов

Надеются, что это помогает людям в будущем!

+1

Спасибо, это, похоже, исправило мою проблему. –

1

У меня тоже есть эта ошибка, для меня проблема была в TableView, у которой были некоторые ограничения. После удаления всех ограничений ошибка перестала отображаться.

Смежные вопросы