Использование индикатора активности MBProgressHUD - PullRequest
0 голосов
/ 03 августа 2011

, поэтому у меня есть табличное представление, и всякий раз, когда пользователь нажимает строку, появляется другое представление класса. Поэтому я хотел иметь индикатор загрузки между переходами. Я использую MBProgressHUD, но он ничего не показал, когда я нажал на строку. И что я должен поместить в @selector ()?

[загрузка showWhileExecuting: @selector () onTarget: self withObject: [NSNumber numberWithInt: i] animated: YES];

Вот мой код.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

loading = [[MBProgressHUD alloc] initWithView:self.view];

[self.view addSubview:loading];

loading.delegate = self;

loading.labelText = @"Loading Events, Please Wait..";

[loading showWhileExecuting:@selector(//what should I put) onTarget:self withObject:nil animated:YES]; 

[tableView deselectRowAtIndexPath:indexPath animated:YES];


    if ([[self.citiesArray objectAtIndex:indexPath.row] isEqual:@"NEW YORK"])
     {
            self.newYorkViewController = [[NewYorkViewController alloc] initWithNibName:@"NewYorkViewController" bundle:nil];
              Twangoo_AppAppDelegate *delegate = (Twangoo_AppAppDelegate*)[[UIApplication sharedApplication] delegate];
            [delegate.citiesNavController pushViewController:self.newYorkViewController animated:YES];
      }

}

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Вы можете взглянуть на главу Документация по какао о селекторах

Селектор можно просто увидеть как указатель на функцию.

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

  • Итак, начните с создания специального метода с именем независимо (здесь doTheJob)

    - (void) doTheJob;
    
  • При этом MBProgressHUD позволяет вам просто указатьрабочий метод, который должен обрабатываться информацией о ходе выполнения с помощью метода showWhileExecuting.И селектор здесь для определения целевого рабочего метода.

    [loading showWhileExecuting:@selector(doTheJob) onTarget:self withObject:nil animated:YES];
    
  • Цель - это ссылка на объект, определяющая селектор.Для простоты, если вы определите метод doTheJob в текущем классе, используйте self в качестве цели.

  • и withObject - это любой параметр, который вы хотите / должны предоставить методу выбора.Помните, что если вам нужно предоставить параметр для целевого метода, вам нужно расширить определение селектора с помощью завершающего двоеточия как @selector (doTheJob:)

Надеюсь, это поможет.

0 голосов
/ 03 августа 2011

Вам необходимо реализовать функцию ожидания, чтобы при возврате элемента управления из этого метода HUD скрывался / исчезал с экрана.Таким образом, это в основном то, что вы делаете, когда HUD отображается на экране, это может быть некоторая обработка или ожидание ответа на запрос http и т. Д. Это также может быть таймер.

- (void)waitForResponse
{
    while (/*Some condition is not met*/)
    {

    }
}

Также вам необходимо реализовать

- (void) hudWasHidden
{
    [HUD removeFromSuperview];
    [HUD release];
}
...