22

我想向我的 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 的新手,如果这个问题是愚蠢的或任何东西,我很抱歉......

4

3 回答 3

58

它真的很简单,但工作方式与他们过去的工作方式略有不同。现在您将“操作”添加到警报中。然后,这些操作由设备上的按钮表示。

alert.addAction(UIAlertAction(title: "Cancel", style: .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)

希望这可以帮助!

于 2014-11-16T11:48:51.187 回答
9

我想继续为特定问题提供特定答案。用户询问“取消”按钮的实现,而不是默认按钮。看看下面的答案!

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)
于 2017-01-29T04:03:34.053 回答
1

这可能是您见过的最糟糕的编码答案,但我可以通过尝试满足您的要求:

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];
于 2016-05-11T20:13:57.353 回答