presentViewController: сбой на iOS <6 (AutoLayout)

Это странная катастрофа, которую я получаю. Сбой происходит, когда я нажимаю кнопку, которая переходит к определенному ViewController. Линия, с которой он падает, – это:

DestinationInformationViewController *info = [[DestinationInformationViewController alloc] init]; [info setModalTransitionStyle: UIModalTransitionStyleCrossDissolve]; [self presentViewController:info animated:YES completion: nil]; // CRASHES HERE [info release]; 

Трассировка аварии:

*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' *** First throw call stack: (0x3758288f 0x35287259 0x37582789 0x375827ab 0x3153d54d 0x3153d6bb 0x3153d423 0x314ce001 0x3143c3c7 0x31319c59 0x3128fc17 0x3129a267 0x3129a1d5 0x3133959b 0x31338367 0x84091 0x374dc3fd 0x31271e07 0x31271dc3 0x31271da1 0x31271b11 0x31272449 0x3127092b 0x31270319 0x31256695 0x31255f3b 0x33c9822b 0x37556523 0x375564c5 0x37555313 0x374d84a5 0x374d836d 0x33c97439 0x31284cd5 0x82bb3 0x71200) terminate called throwing an exception(gdb) Could not instantiate class named NSLayoutConstraint

ПРИМЕЧАНИЕ. Это сбой на моем iPhone 4 iOS 5.1, но не на моем iPhone 4S iOS 6 Beta 2

Я считаю, что это проблема с новым конструктором интерфейса Xcode. Вы случайно создали свой .xib с помощью построителя интерфейса Xcode 4.5? Сейчас я столкнулся с этой проблемой, и я думаю, что это проблема. Мое приложение работает на iOS 6, но не старше.

И вам нужно убедиться, что вы отключили Use Auto Layout для ваших xib .

Это можно сделать:

  1. Откройте свой xib.
  2. Перейдите на вкладку « File Inspector ».
  3. Найдите раздел «Конструктор Interface Builder Document » на правой панели инструментов.
  4. Снимите флажок Use Auto Layout .

Скриншот

У меня была та же проблема, когда я загрузил новое обновление XCode и IOS6 SDK. Вот как я это решил:

Выберите файл построителя интерфейса (будь то файл xib или раскадровки), где возникла ваша ошибка. В помощнике редактора справа в XCode выберите первую вкладку слева и установите флажок для опции «Использовать автоспуск», как на скриншоте выше. Снимите флажок.

Nagaraja спрашивает: «Как решить одно и то же, если мы не используем xib? Я столкнулся с этой проблемой. Я создал контроллер с xib, а затем решил удалить файл xib. Сбой не исчез. что мне нужно было реализовать

 - (void) loadView 

в моем классе контроллера. Как только я реализовал этот метод, проблема решена.

Еще одна возможная причина сбоя при работе с presentViewController заключается в том, что что-то в nib подключено к переменной, которая больше не существует – переменная, либо имеющая имя, изменилась, либо была удалена.

Interesting Posts

Как создать цель, добавить ресурсы для этой цели и построить цель с помощью инструментов командной строки xcode?

сдвиг слайдов angularjs на сафари ios 9

Как мне оправиться от EXC_BAD_ACCESS?

Автономный режим AFNetworking (AFHttpClient) не работает с политикой NSURLRequestReturnCacheDataDontLoad

Как удалить фоновое изображение из UINavigationBar

Неверный размер встроенного видео YouTube

Обновление от кордовы-1.8.1 до кордовы-2.0.0 не удалось iOS

Добавление изображений в iPhone Simulator Фотоальбомы – Принятые «трюки» не работают

переменная с именем TYPE_BOOL (код c ++) конфликтует с макросом ios

Загрузить pdf-файл (из каталога документов) через веб-сервис в iPhone?

Шифрование iOS AES128 / CBC / nopadding Почему не работает?

Есть ли способ сравнить изображения кнопок в Swift / iOS

Есть ли открытый API для интерфейса просмотра карт, который можно увидеть в iOS 10?

Утечка фантомной памяти с ARC в XCode 4.5, где dealloc определенно называется или проблема с инструментами?

iOS – Как я могу запланировать что-то один раз в день?

Давайте будем гением компьютера.