第三方的等待指示器,MBProgressHUD就是第三方提供的等待指示器框架。下面是MBProgressHUD提供的等待指示器樣式,它們基本可以分為:未知結束時間和已知結束時間兩大類等待指示器,在MBProgressHUD中可以為等待指示器添加標簽和詳細標簽
我們將下載的源文件中的MBProgressHUD.h和MBProgressHUD.m拷貝到自己的工程中,MBProgressHUD依賴的框架有:Foundation.framework、UIKit.framework和CoreGraphics.framework,我們需要將這些框架添加到工程中。
我們為應用添加MBProgressHUD等待指示器,修改主視圖控制器MasterViewController.m的startRequest方法代碼如下,注意加粗部分:
[cpp]
-(void)startRequest
{
//初始化MBProgressHUD
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeCustomView;
hud.labelText = @”Loading”;
NSString *strURL = [[NSString alloc]
initWithFormat:@”http://iosbook3/mynotes/webservice.php”];
NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]];
NSString *post;
if (action == ACTION_QUERY) {//查詢處理
post = [NSString stringWithFormat:@"email=%@&type=%@&action=%@",
@"<你的iosbook1.com用戶郵箱>",@"JSON",@"query"];
} else if (action == ACTION_REMOVE) {//刪除處理
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSMutableDictionary* dict = self.listData[indexPath.row];
post = [NSString stringWithFormat:@"email=%@&type=%@&action=%@&id=%@",
@"<你的iosbook1.com用戶郵箱>",@"JSON",@"remove",[dict objectForKey:@"ID"]];
}
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postData];
NSURLConnection *connection = [[NSURLConnection alloc]
initWithRequest:request delegate:self];
if (connection) {
_datas = [NSMutableData new];
}
}
-(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error {
NSLog(@”%@”,[error localizedDescription]);
[MBProgressHUD hideHUDForView:self.view animated:YES];
}
- (void) connectionDidFinishLoading: (NSURLConnection*) connection {
NSLog(@”請求完成…”);
NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:_datas
options:NSJSONReadingAllowFragments error:nil];
if (action == ACTION_QUERY) {//查詢處理
[self reloadView:dict];
} else if (action == ACTION_REMOVE) {//刪除處理
NSString *message = @”操作成功。”;
NSNumber *resultCodeObj = [dict objectForKey:@"ResultCode"];
if ([resultCodeObj integerValue] < 0) {
message = [resultCodeObj errorMessage];
}
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@”提示信息”
message:message
delegate:nil
cancelButtonTitle:@”OK”
otherButtonTitles: nil];
[alertView show];
//重新查詢
action = ACTION_QUERY;
[self startRequest];
}
[MBProgressHUD hideHUDForView:self.view animated:YES];
}
-(void)startRequest
{
//初始化MBProgressHUD
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeCustomView;
hud.labelText = @”Loading”;
NSString *strURL = [[NSString alloc]
initWithFormat:@”http://iosbook3/mynotes/webservice.php”];
NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]];
NSString *post;
if (action == ACTION_QUERY) {//查詢處理
post = [NSString stringWithFormat:@"email=%@&type=%@&action=%@",
@"<你的iosbook1.com用戶郵箱>",@"JSON",@"query"];
} else if (action == ACTION_REMOVE) {//刪除處理
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSMutableDictionary* dict = self.listData[indexPath.row];
post = [NSString stringWithFormat:@"email=%@&type=%@&action=%@&id=%@",
@"<你的iosbook1.com用戶郵箱>",@"JSON",@"remove",[dict objectForKey:@"ID"]];
}
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postData];
NSURLConnection *connection = [[NSURLConnection alloc]
initWithRequest:request delegate:self];
if (connection) {
_datas = [NSMutableData new];
}
}
-(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error {
NSLog(@”%@”,[error localizedDescription]);
[MBProgressHUD hideHUDForView:self.view animated:YES];
}
- (void) connectionDidFinishLoading: (NSURLConnection*) connection {
NSLog(@”請求完成…”);
NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:_datas
options:NSJSONReadingAllowFragments error:nil];
if (action == ACTION_QUERY) {//查詢處理
[self reloadView:dict];
} else if (action == ACTION_REMOVE) {//刪除處理
NSString *message = @”操作成功。”;
NSNumber *resultCodeObj = [dict objectForKey:@"ResultCode"];
if ([resultCodeObj integerValue] < 0) {
message = [resultCodeObj errorMessage];
}
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@”提示信息”
message:message
delegate:nil
cancelButtonTitle:@”OK”
otherButtonTitles: nil];
[alertView show];
//重新查詢
action = ACTION_QUERY;
[self startRequest];
}
[MBProgressHUD hideHUDForView:self.view animated:YES];
}