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