2014-12-03 2 views
0

У меня есть 3 контроллера вида, с которыми я перемещаюсь между ними. Когда я открываю свое приложение, я начинаю с Controller1, который затем могу использовать для перехода к Controller2 или Controller3. Я могу перейти к каждому из них в отдельности, однако, после перехода на Controller3, вернитесь к Controller1, а затем попытайтесь перейти к Controller2, я получаю EXC_BAD_ACCESS с кодом = 1. Нет никакого сообщения об ошибке или ошибке, это вообще просто приводит меня к моему файлу AppDelegate и дает мне этот код ошибки.Swift: приложение сбой во время segue

Я не знаю, в чем проблема, но что-то, что кажется уместным, заключается в том, что я устанавливаю Controller3 в качестве делегата контроллера навигации. У меня есть четвертый контроллер навигации, который также установлен как делегат, и вызывает такое же поведение, когда я от 1-> 4-> 1-> 2, как и с 1-> 3-> 1-> 2. У меня нет проблем с 1-> 4-> 1-> 3 или 1-> 3-> 1-> 4, только когда 2 участвует. Я не уверен, является ли проблема делегатами, и тот факт, что 2 не устанавливается как один. Еще раз, я могу ориентироваться в нем сам по себе, но не после перехода на один из двух других контроллеров подзадачи.

+2

Обратите внимание, что в названии упоминается быстрый, но пометите вопрос как цель-c – Josh

+0

@Josh Nah, его не obj-c. Ну, это может быть, но я предполагаю, что с помощью swift. Он не содержал никакого кода, поэтому мы не можем сказать. –

ответ

0

Если вы установите Controller3 или Controller4 в качестве навигационного контроллера делегата, то вам нужно, чтобы очистить его в viewWillDisappear функции этих классов в противном случае вы будете в конечном итоге с некорректным ссылкой и это то, что вызывает у вас аварии

+0

Как вы его очищаете? –

+0

Установите делегата на нуль – Paulw11

+0

Очистите его, в котором ViewControllers? –

0

I столкнулся с таким же крахом, поэтому я расскажу, в чем проблема: для меня:

  1. Я создал подкласс UIWebView.
  2. В моей раскадровке я перетащил UIWebView на холст и изменил его класс на мой подкласс.

Это все работало. Приложение уже прошло через нашу команду QA, было «принято» владельцем бизнеса, и мы были готовы отправить его в магазин приложений.

Затем мне сказали: «Вы не можете использовать UIWebView. Вы должны использовать WKWebView».

Хорошо, я поменял свой подкласс наследовать от WKWebView, изменил свою внутреннюю логику классов и ... splat. Пытаться перебраться к этому контроллеру просмотра будет аварийно завершено, как это заметил ОП.

Проблема была в моей раскадровке: поскольку она пыталась создать экземпляр моего подкласса, в основном пыталась создать WKWebView, который НЕ обязательно поддерживается в Interface Builder (мой друг говорит, что в более поздних версиях он может быть в порядке, но я didn 't проверить).

TL; DR

Мораль этой истории состоит в том, что если у вас есть объект подкласса на вашем раскадровку, чей предок не может быть втянута из панели инструментов, то вы, скорее всего, сбой при непосредственно перейти.

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