第三方的等待指示器,MBProgressHUD就是第三方提供的等待指示器框架。下面是MBProgressHUD提供的等待指示器樣式,它們基本可以分為:未知結束時間和已知結束時間兩大類等待指示器,在MBProgressHUD中可以為等待指示器添加標簽和詳細標簽
我們將下載的源文件中的MBProgressHUD.h和MBProgressHUD.m拷貝到自己的工程中,MBProgressHUD依賴的框架有:Foundation.framework、UIKit.framework和CoreGraphics.framework,我們需要將這些框架添加到工程中。
我們為應用添加MBProgressHUD等待指示器,修改主視圖控制器MasterViewController.m的startRequest方法代碼如下,注意加粗部分:
-(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]; }