1

我正在制作一个 iOS 6 程序,它从网站下载 JSON 数据并将其显示在表格视图中。我要求用户输入一个地址,然后点击一个按钮。该按钮应显示警报视图,然后下载数据。

我的问题是在下载完成之前不会显示警报视图。我也尝试在下载方法中创建警报视图,但我遇到了同样的问题。有可能做我想做的事吗?如果是,我做错了吗?

谢谢你的帮助。

4

3 回答 3

1

您将获得输出为:加载中......

首先从这里导入 MBProgressHUD.h 和 MBProgressHUD.m

然后在 ViewController.h 中编写如下代码

#import <UIKit/UIKit.h>
#import "MBProgressHUD.h"

@interface ViewController : UIViewController
{

   MBProgressHUD *HUD;

}

然后在 ViewController.m 中编写如下方法

//To Add Loading View on current View

- (void)showOnWindow {

// The hud will disable all input on the view
    HUD = [[MBProgressHUD alloc] initWithView:self.view.window];

// Add HUD to screen 

    [self.view addSubview:HUD]; 

// Register for HUD callbacks so we can remove it from the window at the right time

    HUD.labelText = @"Loading...";

// Show the HUD while the provided method executes in a new thread

   [HUD showWhileExecuting:@selector(yourtask) onTarget:self withObject:nil animated:YES];
}

然后,

// To Remove the Loading View from current view

- (void)removeOnWindow {

// Do something useful in here instead of sleeping ...

   [HUD removeFromSuperview];

}

现在,调用方法 onClick 事件....

// Add Loading View

- (IBAction)SetSignIn:(id)sender {

     [self showOnWindow];

}

// yourtask method

-(void)yourtask {

   @try{

     // Do Whatever you want
     // You can call webservices also

  }
  @catch (NSException *e) {

    NSLog(@"Error");

  }

  @finally{

  [self removeOnWindow];  

  }

}
于 2013-07-29T09:31:03.610 回答
0

谢谢 jrock007

其作品 :

我找到了解决问题的方法,我只需要使用代码更改事件的优先级:

    /*
      Setup indicator and show it
    */


dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
    /*
      Download the data
    */

    dispatch_async(dispatch_get_main_queue(), ^{
        /*
      Remove the Alert View
        */

});

});

于 2014-01-21T18:22:30.187 回答
0

我找到了解决问题的方法,我只需要使用代码更改事件的优先级:

        /*
          Setup indicator and show it
        */


    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
        /*
          Download the data
        */

        dispatch_async(dispatch_get_main_queue(), ^{
            /*
          Remove the Alert View
            */

    });
});

谢谢你帮助我。

于 2013-07-29T08:24:48.917 回答