Функция, вызываемая из другого класса, не работает должным образом - PullRequest
0 голосов
/ 05 марта 2011

У меня есть приложение iPhone с вкладками, в котором панель вкладок является корневым контроллером, и на каждой вкладке запускается отдельное окно веб-просмотра.Каждый раз, когда пользователь нажимает на одну из вкладок, я перехватываю нажатие в AppDelegate и выполняю действия, одной из которых является отображение экрана загрузки (изображение в представлении панели вкладок с отображением переключенного ИСТИНА / ЛОЖЬ).

Моя проблемаэкран загрузки отображается только после завершения всех операций в AppDelegate, что в значительной степени противоречит его цели.Я предполагаю, что я сделал несколько фундаментальных ошибок при разработке этого решения, но, будучи очень неопытным в программировании на iPhone, я не знаю, как это исправить.

Я обращаюсь к функции showLoading через iboutlets, определенные в AppDelegate:

[hv showLoading];

И это то, что он делает:

- (void) showLoading
{
    loadingView.hidden = FALSE;
    wheelHome.hidden = FALSE;
    [wheelHome startAnimating];
    NSLog(@"showLoad 1");
}

Я вижу «showLoad 1» сразу после нажатия на панель, но изображение загрузки отображается только при выходе из didSelectViewController.

Мой вопрос - как сделать так, чтобы экран загрузки отображался из AppDelegate ИЛИ Есть ли лучший способ отобразить экран загрузки?

Ответы [ 2 ]

2 голосов
/ 05 марта 2011

Проблема в том, что пользовательский интерфейс обновляется только тогда, когда код обработки событий возвращается в цикл выполнения. У вас есть два варианта:

  1. Подготовьтесь к продолжительной задаче (настройте пользовательский интерфейс), а затем запустите задачу с помощью [myDownloader persormSelector:@selector(download) withObject:nil afterDelay:0];. Преимущество использования performSelector:withObject:afterDelay: состоит в том, что ваш код возвращается в цикл выполнения, получает время для обновления пользовательского интерфейса, а затем немедленно запускает задачу.
  2. Создайте свои долгосрочные задачи (загрузка, ...), чтобы они выполнялись в фоновом режиме.
0 голосов
/ 05 марта 2011

Прежде всего, ваша панель вкладок должна контролироваться UITabBarController, а не делегатом приложения.См. Шаблон TabCar Xcode для деталей реализации.

Во-вторых, звучит так, как будто вы хотите Образ запуска приложения .Это статичное изображение, которое работает как заставка, если вашему приложению требуется немного времени для запуска.

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