显示异常MBProgressHUD实现的进度。

时间:2014-04-19 18:10:15

标签: ios objective-c multithreading uitableview mbprogresshud

我正在加载MBProgressHUD时正在显示UITableView动画。

我基本上在viewDidLoad中创建 HUD ,然后触发包含所有UITableView代码的选择器。

self.HUD = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];

    self.HUD.mode = MBProgressHUDAnimationFade;
    self.HUD.labelText = @"Finding Friends";

    [self performSelector:@selector(myTask) withObject:nil afterDelay:0.001];

我这样做是因为我的表视图阻塞了主线程。所以基本上这允许我在表视图开始之前创建HUD并阻止主线程。这样,在整个表视图设置过程中,HUD实际上是可见的。

我从MBProgressHUD的创建者在这个stackoverflow帖子中得到了上面的代码:Run MBProgressHUD in another thread?

但是,现在我希望能够显示使用 HUD 设置的表格视图的实际进度,但我对如何执行此操作感到困惑。现在我只是显示一个“旋转”动画,但它实际上并没有显示真正的进展。它只是旋转。

我想使用这样的动画:http://dl.dropboxusercontent.com/u/378729/MBProgressHUD/4.png

然后在表视图代码运行时填充它。

我愿意接受任何建议并感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

在viewDidLoad方法中添加此代码段。执行块时设置tableView的委托,以便可以在表视图上加载数据

MBProgressHUD *progressView = [[MBProgressHUD alloc] initWithView:self.view];
            [self.view addSubview:progressView];
            progressView.labelText = kLoadingMessage;

            [progressView showAnimated:YES whileExecutingBlock:^
             {

                 self.tableView.datasource = self;
                 self.tableView.delegate = self;

             }
                       completionBlock:^
             {
                 [progressView removeFromSuperview];
             }];