忍者ブログ

[PR]

2024年11月21日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

アラートを出す

2009年02月27日
ユーザーへの通知方式として、一番確実なのはアラートの表示でしょう。これを使うと、画面が暗くなって、中央にメッセージを表示します。OKボタンを押すと元の画面に戻ります。今回はTiny3DのFTPアップロードが終わった時を例にして説明します。まず、アップロードが終わるとコールバック関数から代表クラス(Tiny3DAppDelegeteという名前になっています)にメッセージを送ります。

objc_msgSend(appDelegate,@selector(finishUpload));


この命令でのappDelegateが代表クラスのid値です。特に引数を付けていないのでセレクタのfinishUploadには右に:が付きません。

-(void)finishUpload {

NSLog(@"call appDelegate finishUpload");

if([tabBarController selectedIndex]==3) {

id viewController = [(UINavigationController *)[tabBarController

selectedViewController]topViewController];

objc_msgSend(viewController,@selector(uploadFinished));

}

}


上がTiny3DAppDelegateのfinishUploadです。Tiny3Dの場合はタブバーのボタンが入れ替わる事はないので、必ずツールのインデックス番号は3(一番左が0なので、左から4番目)になります。そのツールのトップ画面のビューコントローラーへ向けて、メッセージを送ります。

-(void)uploadFinished {

NSLog(@"call FTPUpload uploadFinished");

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Tiny3D",@"title")
message:NSLocalizedString(@"Upload completed.",@"message")

delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];

[alert show];

[alert release];

}


そして上にあるのがそのビューコントローラー(FTPUploadViewControllerと勝手に命名してますが)にあるuploadFinishedです。ちなみに2行目の命令で画面の左上に通信中などに表示される回転するアニメーションの表示を消しています。表示の開始の時はNOの部分がYESになります。その後にあるのがアラートの表示内容を決めているところです。英語では"Upload completed."と表示しますが、日本語だと「アップロードに成功しました。」と出るようになっています。実際に表示するのは[alert show]の部分です。alertは自分でallocで作ったオブジェクトなので、表示させたらreleaseで解放します。当たり前ですがリリースしたからといって表示が消える事はありません。OKが押されない限りは表示したままになります。なお、このときに表示されるボタンでいろいろと凝った事もできるのですが、それは次の機会に書きます。





PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Trackback
トラックバックURL: