добавить подпредставление к не показанному пользовательскому интерфейсу - PullRequest
0 голосов
/ 27 марта 2012

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

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

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

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

Есть ли правильный способ вести себя в таких обстоятельствах?

Нужно ли принудительно обновлять представление или мне нужно удалить их из superView и вернуть их обратно?

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

-K-

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

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

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

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

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

0 голосов
/ 27 марта 2012

Здравствуйте, Holographix. У вас нет кода, так что трудно сказать, ну, похоже, объект Uilabel и индикатор выполнения освобождаются, когда вы возвращаетесь к представлению.

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