2

我使用MBProgressHUDshowWhileExecuting 从网络查询一些数据,但MBProgressHUD有时不是中心

在此处输入图像描述

图片上(红色数字):

左上角显示加载,中间显示背景。

1.加载显示不在MBProgressHUD的背景上 2.只显示一个不包含加载的背景

-(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.
}
4

4 回答 4

2

仅供参考:我说

[[[UIApplication sharedApplication] keyWindow] addSubview:_progress];

代替

[self.view addSubview:_progress];

我不是很喜欢它,也因为它适用self.view于另一种情况,但我在这里没有看到其他选择。

于 2014-01-08T17:24:41.850 回答
1

我发现这个问题。当 MBProgressHUD 清理它会丢失矩形。

- (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];

}

于 2012-12-28T02:49:56.900 回答
1

我有同样的问题。看看这个,为我解决了这个问题,非常简单:

[MBProgressHUD showHUDAddedTo:_selfWeak.viewOverlay animated:YES].center 
 = self.viewOverlay.center;

如果您保存通过调用收到的实例类型,showHUDAddedTo:animated:您应该能够做更多的事情。

于 2015-06-18T08:40:22.993 回答
0

MBProgressHUD 会自动将自身定位在您将其添加到的视图上。由于您将其添加到导航控制器视图中,因此它会将自身定位为在进行中阻止与导航栏的任何交互。

如果这不是您想要发生的,则将 MBProgressHUD 子视图添加到不同的视图中,在这种情况下,您可能希望它在 self.view 而不是 self.navigationcontroller.view 上。

于 2012-11-26T03:01:52.597 回答