我使用MBProgressHUD
showWhileExecuting来查询网络中的某些数据,但有时MBProgressHUD
不是中心
图片(红色数字):
显示在左上方,背景显示在中心。
1.加载显示不在MBProgressHUD的背景上 2.just显示不包含加载的背景
-(void)viewDidLoad
{
//other code ...
mb = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
// --> i try which causes also an error
//[[MBProgressHUD alloc] initWithWindow:self.view.window];
// --> error too
//[[MBProgressHUD alloc] initWithView:self.view];
mb.labelText = @"loding city...";
[self.navigationController.view addSubview:mb];
[mb showWhileExecuting:@selector(queryCity:)
onTarget:self
withObject:[NSNumber numberWithInt:1]
animated:YES];
}
-(void)queryCity:(NSNumber*)flag
{
//query some data from network.
}
答案 0 :(得分:2)
仅供参考:我通过说
来修复它 [[[UIApplication sharedApplication] keyWindow] addSubview:_progress];
而不是
[self.view addSubview:_progress];
我真的不喜欢它,也因为它在另一种情况下与self.view
一起使用,但我在这里没有看到另一种选择。
答案 1 :(得分:1)
我发现了这个问题。 当MBProgressHUD清理时,它将丢失rect。
- (void)cleanUp {
taskInProgress = NO;
//changed by zt9788 2012-12-26
//comment this line to fix it.
//self.indicator = nil;
#if !__has_feature(objc_arc)
[targetForExecution release];
[objectForExecution release];
#else
targetForExecution = nil;
objectForExecution = nil;
#endif
[self hide:useAnimation];
}
答案 2 :(得分:1)
我遇到了同样的问题。看看这个,为我解决它并且非常简单:
[MBProgressHUD showHUDAddedTo:_selfWeak.viewOverlay animated:YES].center
= self.viewOverlay.center;
如果您通过调用showHUDAddedTo:animated:
来保存您收到的实例类型,那么您应该能够做更多的事情。
答案 3 :(得分:0)
MBProgressHUD会自动将其自身定位在您添加到的视图上。自从您将其添加到导航控制器视图后,它就会定位为阻止在进行中与导航栏的任何交互。
如果这不是你想要发生的,那么将MBProgressHUD子视图添加到不同的视图,在这种情况下,你可能想要它在self.view而不是self.navigationcontroller.view。