使用MBProgressHUD活动指示器

时间:2011-08-03 05:35:27

标签: iphone uiactivityindicatorview mbprogresshud

所以我有一个表格视图,每当用户按一行时,会显示另一个班级视图。所以我希望在转换之间有一个加载指示器。我正在使用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 :(得分:0)

您需要实现一个等待函数,以便当控件从该方法返回时,HUD将隐藏/消失在屏幕上。所以它基本上是你在HUD显示在屏幕上时所做的,它可能是一些处理或等待响应http请求等。它也可以是一个计时器。

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

    }
}

您还需要实现

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

答案 1 :(得分:0)

您可以查看Cocoa documentation chapter on selectors

选择器可以简单地看作指向函数的指针。

然后,我猜你正在尝试在特定进程运行时显示进度hud。这个特定的进程在逻辑上应该以专用方法隔离(让我们称之为doTheJob)。

  • 首先创建一个名为whatever的专用方法(这里是doTheJob)

    - (void) doTheJob;
    
  • 据说MBProgressHUD允许您使用showWhileExecuting方法简单地指定应由进度信息处理的工作方法。选择器在这里定义了目标工作者方法。

    [loading showWhileExecuting:@selector(doTheJob) onTarget:self withObject:nil animated:YES];
    
  • 目标将是定义选择器的对象引用。为了保持简单,如果你定义方法,当前类中的doTheJob使用self作为目标。

  • 和withObject是您希望/需要提供给选择器方法的任何参数。请注意,如果需要为目标方法提供参数,则需要使用尾随冒号扩展选择器定义@selector(doTheJob :)

希望这有帮助。