2012-03-27 3 views
0

Я имею дело с странной проблемой: у меня есть UIViewController для обработки списка элементов для загрузки через покупку inapp.добавить subview к не показанному uiview

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

Если перед этим пользователь хочет перейти в другую часть приложения (например, нажав на элемент из меню панели вкладок), приложение продолжает процесс покупки оттуда (это сокращается до дачи «да» несколько диалоговых окон и ввод учетных данных учетной записи магазина itunes).

Процесс (прикрепленный к фоновому потоку) работает плавно до конца, но если пользователь возвращается в вид магазина, UILabel и индикатор выполнения не отображаются, я имею в виду, они инициализированы и но они не видны.

Есть ли правильный способ вести себя в этом случае?

Должен ли я принудительно обновлять представление, или мне нужно удалить его из superView и push'em снова?

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

-K-

ответ

2

Без кода трудно дать точное решение.

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

Правильно, что вы сохранили индикатор выполнения и метку (даже если есть более эффективные способы достижения того же результата), но вы должны добавить их в представление контроллера представления в методе viewDidLoad. Типичный способ сделать это - сохранить «активную» полосу выполнения в словаре, и когда представление будет перезагружено из ниба, оно должно быть добавлено к нему. Как только вы закончите скачивание, вы сможете удалить прогресс как из словаря, так и из представления. Есть и другие способы достижения одного и того же результата, поэтому мое предложение - просто дать вам представление.

Итак, чтобы проверить, правильно ли я ответил, вы должны проверить метод viewDidUnload, добавить на него точку останова и увидеть, как только он был запущен, и когда вы вернетесь в исходное представление, если индикатор выполнения исчез или нет.

+0

Да, я получаю изображение, элементы сохраняются, потому что я выпускаю их самостоятельно, как только загрузка будет завершена, поэтому я попытаюсь снова вернуть их в viewDidLoad. thks – holographix

+0

классный, который сделал трюк, а точнее, я должен был сделать это в viewDidAppear, но он действительно работал. thx a ton! – holographix

0

Здравствуйте Holographix у havnt отправили любой код, поэтому было бы трудно сказать хорошо это походит на объект UILabel и прогресс бар становится освобождено время у возвращается обратно к просмотру.

+0

Я не писал ни одного кода, потому что это не вопрос кода, это просто вопрос логики, так или иначе: uilabel и progressbar не выпущены, потому что индикатор выполнения делегирует себя, и у меня есть метод который заботится о создании NSLog, который сообщает о ходе работы самого бара, и я могу прочитать его, даже если я не в «Store» UIView, код действительно перепутался, но если вы чувствуете себя хорошо с этим и вы думаете, что это может помочь, я отправлю его вам. Спасибо, в любом случае! – holographix

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