我正在制作一个 iOS 6 程序,它从网站下载 JSON 数据并将其显示在表格视图中。我要求用户输入一个地址,然后点击一个按钮。该按钮应显示警报视图,然后下载数据。
我的问题是在下载完成之前不会显示警报视图。我也尝试在下载方法中创建警报视图,但我遇到了同样的问题。有可能做我想做的事吗?如果是,我做错了吗?
谢谢你的帮助。
我正在制作一个 iOS 6 程序,它从网站下载 JSON 数据并将其显示在表格视图中。我要求用户输入一个地址,然后点击一个按钮。该按钮应显示警报视图,然后下载数据。
我的问题是在下载完成之前不会显示警报视图。我也尝试在下载方法中创建警报视图,但我遇到了同样的问题。有可能做我想做的事吗?如果是,我做错了吗?
谢谢你的帮助。
您将获得输出为:
首先从这里导入 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];
}
}
谢谢 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
*/
});
});
我找到了解决问题的方法,我只需要使用代码更改事件的优先级:
/*
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
*/
});
});
谢谢你帮助我。