Перезагрузка просмотра при нажатии кнопки «Назад» на панели навигации - PullRequest
1 голос
/ 09 мая 2009

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

Теперь возникает вопрос, когда пользователь нажимает кнопку сведений о спине / планете слева от панели навигации, отображаемой в представлении состояния, и возвращается к представлению сведений о планете, ему по-прежнему отображается добавление / удаление (в зависимости от того, что было показано ранее) кнопка, тогда как теперь она должна быть удалена / добавлена ​​(согласно ранее загруженной кнопке) в соответствии с кодом, который я написал.

Что я могу понять, так это то, что когда пользователь нажимает кнопку «Назад», предыдущее представление не перезагружается, представление состояния просто выскакивает. Есть ли способ заставить приложение запустить setNeedsDisplay или что-то, что могло бы перезагрузить код viewDidLoad сведений о закладках, когда пользователь нажимает кнопку «Назад» в представлении состояния?

Или возможно другое решение?

Это очень смущает пользователя, так как он думает, что он только что удалил / добавил закладку, но кнопка все еще просит его добавить / удалить ...

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

Ответы [ 3 ]

5 голосов
/ 09 мая 2009

Взять код, который устанавливает кнопку в методе viewDidLoad, и переместить его в viewWillAppear При повторном входе в вид он должен обновлять кнопку должным образом.

0 голосов
/ 03 сентября 2009

установить правильный делегат и

- (void)navigationController:(UINavigationController *)navigationController
                 willShowViewController:(UIViewController *)viewController
                 animated:(BOOL)animated
{
    NSLog(@"navigationController willShowViewController");
}
0 голосов
/ 09 мая 2009

Я нашел решение: Такой код (изменение кнопки после popViewController или подобных событий) должен быть записан в viewWillApear, чтобы он работал каждый раз при загрузке представления независимо от того, что.

Спасибо Квентарезу и crackity_jones на #iphonedev на irc.freenode.net.

...