web-dev-qa-db-ja.com

UIAlertControllerStyle.ActionSheetを使用したUIAlertControllerのキャンセルボタン

UIAlertに個別のキャンセルボタンを追加したい。

UIActionSheetでそれを行う方法は知っていますが、UIAlertでも可能です。

var sheet: UIActionSheet = UIActionSheet();
    let title: String = "...";
    sheet.title  = title;
    sheet.delegate = self;
    sheet.addButtonWithTitle("Cancel");
    sheet.addButtonWithTitle("...")
    sheet.cancelButtonIndex = 0;
    sheet.showInView(self.view);

これには、...ボタンとキャンセルボタンがあります。

だから誰もこれを行う方法を知っていますか

    var alert = UIAlertController(title: "...", message: "....", preferredStyle: UIAlertControllerStyle.ActionSheet)

私はxcodeを初めて使用し、Swiftこの質問が愚かか何かでしたらごめんなさい...

17
user4001326

本当にシンプルですが、以前の動作とは少し異なります。ここで、アラートに「アクション」を追加します。これらのアクションは、デバイス上のボタンで表されます。

alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))

上記は単純なキャンセルボタンに必要なコードです-アラートの削除は自動的に行われるので、それをハンドラーに入れないでください。次に、何かを行う別のボタンを作成する場合は、以下のコードを使用します。

alert.addAction(UIAlertAction(title: "Button", style: UIAlertActionStyle.Default, handler: { action in
        println("This button now calls anything inside here!")
    }))

あなたの質問を理解し、これがあなたの質問に答えることを願っています。また、すべての「アクション」を追加した後、以下のコードを使用してアラートを表示することも追加します。

self.presentViewController(alert, animated: true, completion: nil)

お役に立てれば!

40
Jack Chorley

先に進み、特定の質問に対して具体的な回答を提供したかったのです。ユーザーは、デフォルトのボタンではなく、「キャンセル」ボタンの実装について尋ねました。以下の回答をご覧ください!

let alertController = UIAlertController(title: "Select one", message: "Hey! Press a button", preferredStyle: .actionSheet)

let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)

alertController.addAction(cancelAction)

self.present(alertController, animated: true, completion: nil)
7
Kenny Batista

これはあなたが見た中で最悪のコード化された答えかもしれませんが、私はこれを試してあなたの要件を満たすことができました:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleAlert];
UILabel *alertLine = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, alertController.view.frame.size.width, 2)];
alertLine.backgroundColor=[UIColor blackColor];
[alertController.view.preferredFocusedView addSubview:alertLine];
UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:ok];
[self.navigationController presentViewController:alertController animated:YES completion:nil];
1
Pradeep Mittal