it-swarm-ja.tech

iPhoneのアラートビュー

私は、iPhoneアプリケーションの開発は初めてです。 OKCancelの2つのボタンを持つアラートビューを設計したい。ユーザーがOKボタンに触れると、helloというメッセージを出力します。彼らがCancelボタンに触れると、cancelを印刷します。

助けてください;どうすればいいですか?

25
shreedevi

アラートを表示するには:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you want to say hello?"
                                                message:@"More info..."
                                               delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"Say Hello",nil];
[alert show];
[alert release];

タップされたボタンに応答するには:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0) {
        NSLog(@"Cancel Tapped.");
    }
    else if (buttonIndex == 1) {
        NSLog(@"OK Tapped. Hello World!");
    }
}

詳細については、- IAlertView Class Reference および IAlertView Delegate Protocol Reference を参照してください。

63
Steve Harrison

選択された回答は非推奨であるため、新しいソリューションを次に示します。

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert"
                               message:@"This is an alert."
                               preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
   handler:^(UIAlertAction * action) {}];

[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];

iOs開発者ガイド に示されています。

26
krakover

次のスニペットでアラートを表示します

 UIAlertView * alert = [[UIAlertView alloc] 
 initWithTitle:@ "情報に基づいた選択を行う" 
 message:nil 
 delegate:self 
 cancelButtonTitle :@ "Cancel" 
 otherButtonTitles:@ "OK"、nil]; 
 [alert show]; 

デリゲートはselfに設定されているため、アラートが破棄されると、独自のクラスがコールバックを受け取ります。デリゲートは、UIAlertViewDelegateプロトコルを実装する必要があります。

-(void)alertView:(UIAlertView *)alertView 
 clickedButtonAtIndex:(NSInteger)buttonIndex {
 
 if(buttonIndex == 1){
 //やる!
} else {
 //キャンセル
} 
} 
5
Niels Castle

iPhoneでアラートメッセージを表示するいくつかの方法があります

その他のサンプルとスクリーンショットのリンク を確認してください。

(ソースコードを含むXCodeプロジェクト)

  • シンプルアクションシート
  • OK /キャンセルアクションシート
  • シンプルアラート

// [OK]ボタンと[キャンセル]ボタンでアラートを開きます

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"UIAlertView"
        message:@"My message" delegate:self cancelButtonTitle:@"Cancel"
        otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
2

enter image description here

Objective Cの場合:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"My Alert"
            message:@"This is an action sheet." 
            preferredStyle:UIAlertControllerStyleActionSheet]; // 1
    UIAlertAction *firstAction = [UIAlertAction actionWithTitle:@"one"
            style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
                NSLog(@"You pressed button one");
            }]; // 2
    UIAlertAction *secondAction = [UIAlertAction actionWithTitle:@"two"
            style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
                NSLog(@"You pressed button two");
            }]; // 3

    [alert addAction:firstAction]; // 4
    [alert addAction:secondAction]; // 5

    [self presentViewController:alert animated:YES completion:nil]; // 6

ForSwift:

let alert = UIAlertController(title: "My Alert", message: "This is an action sheet.", preferredStyle: .Alert) // 1
    let firstAction = UIAlertAction(title: "one", style: .Default) { (alert: UIAlertAction!) -> Void in
        NSLog("You pressed button one")
    } // 2

    let secondAction = UIAlertAction(title: "two", style: .Default) { (alert: UIAlertAction!) -> Void in
        NSLog("You pressed button two")
    } // 3

    alert.addAction(firstAction) // 4
    alert.addAction(secondAction) // 5
    presentViewController(alert, animated: true, completion:nil) // 6

0

使用できるデバッグ出力(Xcodeからではなくデバイスでアプリを起動したときにのみ表示されるバグのためにNSLogを使用できない場合があります):

#define MY_ALERT(str) [[[UIAlertView alloc] initWithTitle:@"System Alert" message:str delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]

次に、コードで次のようにできます。

MY_ALERT(NSStringFromCGRect(someView.frame))
0
Lukas Kalinski