Подтвердить что ты не робот

Кнопка Отмена в UIAlertController с UIAlertControllerStyle.ActionSheet

Я хочу добавить отдельную кнопку отмены в свой 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 и быстро так жаль, если этот вопрос немой или что-то еще...

4b9b3361

Ответ 1

Это действительно просто, но работает немного по-другому, как они работали. Теперь вы добавляете "действия" к своим предупреждениям. Эти действия затем отображаются кнопками на устройстве.

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)

Надеюсь, это поможет!

Ответ 2

Я хотел пойти дальше и дать конкретный ответ по конкретному вопросу. Пользователь спросил о реализации кнопки "Отмена", а не кнопки по умолчанию. Проверьте ответ ниже!

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)

Ответ 3

Это может быть наихудший закодированный ответ, который вы бы видели, но я смог выполнить ваше требование, попробовав это:

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];