навигационный контроллер безумие - PullRequest
1 голос
/ 08 мая 2009

Привет. У меня есть приложение навигационной панели, которое плохо себя ведет. У меня есть две кнопки: одна показывает все результаты из моей базы данных, а другая показывает подмножество моей базы данных. Конечно, у каждой кнопки есть свой метод действия. Оба эти метода создают экземпляр объекта контроллера представления того же класса.

Если я запускаю приложение и нажимаю только кнопку «все результаты», я вижу все результаты. Глупо то, что когда я нажимаю кнопку для подмножества результатов (и вижу подмножество результатов), нажимаю Назад на панели навигации, а затем нажимаю первую кнопку для всего набора, я снова вижу подмножество.

При отладке по всем точкам останова я заметил, что метод dealloc моего контроллера представления результатов не вызывается. Однако, когда я нажимаю кнопку «Назад», а затем нажимаю кнопку «все результаты», методы alloc / init действительно вызывают снова для моего контроллера представления результатов.

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

Любой совет был бы великолепен. Спасибо!

Ответы [ 4 ]

1 голос
/ 08 мая 2009

Вызов «reloadTableData» в табличном представлении должен обеспечить обновление данных. Вызовите это в методах действия.

0 голосов
/ 18 мая 2009

Некоторое время назад я понял, что случилось, и подумал, что отвечу на свой глупый вопрос. :)

Я забыл, что я сделал класс Database одним синглтоном и поместил основной указатель на "allResults" в классе делегата приложения.

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

0 голосов
/ 08 мая 2009

Это просто дикая догадка, но это может быть связано с повторным использованием tableViewCells. Попробуйте всегда создавать UITableViewCell, избегая повторного использования идентификатора, чтобы увидеть, сохраняются ли старые данные.

0 голосов
/ 08 мая 2009

Почему ваши кнопки постоянно создают экземпляр контроллера вида? Почему бы не иметь указатели на контроллеры представления в качестве переменных экземпляра, которые нужно установить только один раз, а затем использовать по желанию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...