web-dev-qa-db-ja.com

iPhoneでアラートボックスを作成するには?

ユーザーが何かを削除しようとすると、「よろしいですか」と表示され、「はい」または「いいえ」が表示されるように、アラートタイプボックスを作成したいと思います。 iPhoneでこれを行う最良の方法は何ですか?

28
Blane Townsend

UIAlertViewがそれを行う最良の方法です。アプリの通常の機能に戻る前に、画面の中央にアニメーション表示され、背景を暗くして、ユーザーにアドレスを強制します。

次のようなUIAlertViewを作成できます。

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wait" message:@"Are you sure you want to delete this.  This action cannot be undone" delegate:self cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil];
[alert show];

メッセージが表示されます。

次に、削除またはキャンセルをタップしたかどうかを確認するには、これを使用します:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0){
        //delete it
    }
}

ヘッダーファイル(.h)、UIAlertViewDelegateを含めるには、<UIAlertViewDelegate>、クラスの継承元の隣(UIViewControllerまたはUITableViewControllerなど)

UIAlertViewsのすべての詳細については、こちらをご覧ください Apple Docs Here

役立つことを願っています

60
Andrew

投稿はかなり古いですが、それでも良い質問です。 iOS 8では、答えが変わりました。今日は、「UIAlertControllerStyle.ActionSheet」の「preferredStyle」で「UIAlertController」を使用したいです。

ボタンにバインドされている次のようなコード(Swift):

@IBAction func resetClicked(sender: AnyObject) {
    let alert = UIAlertController(
        title: "Reset GameCenter Achievements",
        message: "Highscores and the Leaderboard are not affected.\nCannot be undone",
        preferredStyle: UIAlertControllerStyle.ActionSheet)
    alert.addAction(
        UIAlertAction(
            title: "Reset Achievements",
            style: UIAlertActionStyle.Destructive,
            handler: {
                (action: UIAlertAction!) -> Void in
                gameCenter.resetAchievements()
            }
        )
    )
    alert.addAction(
        UIAlertAction(
            title: "Show GameCenter",
            style: UIAlertActionStyle.Default,
            handler: {
                (action: UIAlertAction!) -> Void in
                self.gameCenterButtonClicked()
            }
        )
    )
    alert.addAction(
        UIAlertAction(
            title: "Cancel",
            style: UIAlertActionStyle.Cancel,
            handler: nil
        )
    )
    if let popoverController = alert.popoverPresentationController {
        popoverController.sourceView = sender as UIView
        popoverController.sourceRect = sender.bounds
    }
    self.presentViewController(alert, animated: true, completion: nil)
}

次の出力が生成されます。 enter image description here

編集:iPad、iOS 8以降でコードがクラッシュしました。ここで説明されているように必要な行を追加した場合: 別のスタックオーバーフローの答え

14
jboi

Swiftの場合、非常に簡単です。

    //Creating the alert controller
    //It takes the title and the alert message and prefferred style
    let alertController = UIAlertController(title: "Hello  Coders", message: "Visit www.simplifiedios.net to learn xcode", preferredStyle: .Alert)

    //then we create a default action for the alert... 
    //It is actually a button and we have given the button text style and handler
    //currently handler is nil as we are not specifying any handler
    let defaultAction = UIAlertAction(title: "Close Alert", style: .Default, handler: nil)

    //now we are adding the default action to our alertcontroller
    alertController.addAction(defaultAction)

    //and finally presenting our alert using this method
    presentViewController(alertController, animated: true, completion: nil)

参照: iOS Show Alert Message

2
Shaba Aafreen

誰もがUIAlertViewと言っています。ただし、削除を確認するには、UIActionSheetの方が適している可能性があります。 IAlertViewとUIActionSheetを使用する場合 を参照してください

1
Jon Reid

警告メッセージをポップするには、UIAlertViewを使用します。

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wait" message:@"Are you sure you want to delete this." **delegate:self** cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil];
[alert show];
[alert release];

デリゲートを自己として設定すると、このメソッドでアクションを実行できます

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
0
Anand

UIAlertViewは確認のための明らかな選択肢のようです。

コントローラーにデリゲートを設定し、UIAlertViewDelegateプロトコルを実装します http://developer.Apple.com/library/ios/#documentation/uikit/reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html

0
InsertWittyName

IAlertView class を使用して、ユーザーに警告メッセージを表示します。

0
Black Frog

IAlertView を使用します。

UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Alert Title" 
                                                     message:@"are you sure?"
                                                    delegate:self 
                                           cancelButtonTitle:@"No"
                                           otherButtonTitles:@"Yes", nil];


        [av show];
        [av autorelease];

必ず実装してください:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

応答を処理します。

0
rjstelling

UIAlertViewは非推奨になったため、これに遭遇する将来のコーダーに答えを提供したかったのです。

UIAlertViewの代わりに、UIAlertControllerを次のように使用します。

@IBAction func showAlert(_ sender: Any) {
  let alert = UIAlertController(title: "My Alert", message: "This is my alert", preferredStyle: UIAlertControllerStyle.alert)

  alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: {(action) in 
    alert.dismiss(animated: true, completion: nil)
  }))
  self.present(alert,animated:true, completion:nil)
}
0
danner.tech