2008-12-09 3 views
0

Я использую UINavigationController, чтобы нажать и открыть представление.Какой метод при нажатии кнопки навигации «назад»?

Я использовал [[self navigationController] pushViewController:myView animated:YES], чтобы нажать на вид. Затем я нажал на кнопку в левом верхнем углу назад, чтобы вернуться, я получаю сообщение об ошибке:

*** -[NSCFDictionary superview]: unrecognized selector sent to instance 0x1451a0 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary superview]: unrecognized selector sent to instance 0x1451a0' 

Я задаюсь вопросом, какой метод -popViewController звонит, когда кнопка назад называется. Произошла ли эта ошибка при первом просмотре или втором вводе.

Спасибо.

ответ

3

Кнопка «Назад» должна называться -popViewControllerAnimated :. Тем не менее, похоже, что у вас есть ошибка надкласса класса. В принципе, у вас есть представление, которое назначается кому-то. Это представление - это просто адрес в памяти. В какой-то момент вы освобождаете это представление до конца до состояния сохранения 0. Когда это происходит, представление dealloc'd. В некоторый момент после этого создается NSDictionary с тем же адресом памяти, что и ваш предыдущий, теперь освобожденный вид. Теперь что-то пытается отправить ваше сообщение, но его больше нет, вместо этого там есть NSDictionary. В нем говорится что-то вроде: [view superiew], но вид теперь указывает на диктатуру, которая не отвечает на супервизор.

Итог: проверьте ваши вызовы сохранения/освобождения/автоответчика и убедитесь, что вы не перевыпускаете одно из своих видов (или контроллеры просмотра, хотя это менее вероятно).

+0

Предложение Пер Бена, я перепроверил код, похоже, что у меня есть локальный UIButton, который был создан и выпущен в методе. После того, как я изменил эту локальную переменную UIButton на переменную экземпляра и только выпустил в dealloc, проблема исчезнет. Thanks Ben – BlueDolphin 2011-02-03 20:16:16

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