データのロードとロード中のAlert表示
①Viewが表示されたらWeb上のデータを取得しに行く
②データ取得している間はAlertを表示する。
③データが取得し終わったらAlertを消す。
@implementation RootViewController
- (void) viewDidLoad {
alert = [[UIAlertView alloc] initWithTitle:@"Loading..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
// ロード中...のAlertを生成
spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(126.0f, 80.0f, 30.0f, 30.0f)];
// Alertの上に載せるUIActivityIndicatorView(クルクル)を生成
[alert addSubview:spinner];
// Alertの上にクルクルを配置
[spinner startAnimating];
// クルクル開始
[alert show];
// ロード中Alertの表示
[self performSelector:@selector(dismissAlert:) withObject:alert afterDelay:0.1];
// Alertが表示されてから0.1秒後にdismissAlertをコールする(非同期にするために直接呼ばない)
}
/* ロード中のAlert表示中に呼ばれるメソッド */
- (void) dismissAlert :(UIAlertView*) _alert {
NSURL *url = [NSURL URLWithString:@"http://○○○○○○○○○.txt"];
NSError *error = nil;
NSURLResponse *urlResponse = nil;
NSData *contentData = [NSURLConnection sendSynchronousRequest: [NSURLRequest requestWithURL: url]
returningResponse: &urlResponse
error: &error];
if (error != nil || [contentData isEqual:nil]) {
NSLog(@"Fetch Error", [error localizedDescription],@"OK", nil, nil);
alertError = [[UIAlertView alloc] initWithTitle:@"Load Error" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK",nil];
[alertError show];
[alertError release];
}else {
NSLog(@"ロードデータ:%@",contentData);
[alert dismissWithClickedButtonIndex:alert.cancelButtonIndex animated:YES];
//ロード中Alertの消去
[alert release];
//Alertのリリース
}
}
[0回]
PR