在Swift中创建一个UIAlertAction

时间:2015-01-25 14:04:41

标签: ios swift uialertcontroller

我想创建以下UIAlertAction

img1

@IBAction func buttonUpgrade(sender: AnyObject) {

           let alertController = UIAlertController(title: "Title",
        message: "Message",
        preferredStyle: UIAlertControllerStyle.Alert)

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in
        // ...
    }

    alertController.addAction(cancelAction)
}

我发现UIAlertController已初始化为titlemessage,是否更喜欢将其显示为提醒或操作表。

按下按钮时,我想显示提醒,但alert.show()无效。为什么我的代码不起作用?

3 个答案:

答案 0 :(得分:14)

这里的主要问题是UIAlertController(与UIAlertView不同)是UIViewControlller的子类,这意味着它需要以这样的方式呈现(而不是通过show()方法)。除此之外,如果要将取消按钮的颜色更改为红色,则必须将取消操作的警报样式设置为.Destructive

仅当您希望按钮为红色时才有效。如果要将警报控制器中按钮的颜色更改为任意颜色,则只能通过在警报控制器的tintColor属性上设置view属性来完成此操作,该属性将更改所有按钮的色调(破坏性除外)。应该注意的是,根据Apple已经实施的设计范例,由于其具有粗体文本的含义,因此无需更改取消按钮的颜色。

如果您仍然希望文本为红色,可以这样做:

let alertController = UIAlertController(
    title: "Title",
    message: "Message",
    preferredStyle: UIAlertControllerStyle.Alert
)

let cancelAction = UIAlertAction(
    title: "Cancel",
    style: UIAlertActionStyle.Destructive) { (action) in
    // ...
}

let confirmAction = UIAlertAction(
    title: "OK", style: UIAlertActionStyle.Default) { (action) in
    // ...
}

alertController.addAction(confirmAction)
alertController.addAction(cancelAction)

presentViewController(alertController, animated: true, completion: nil)

产生您之后的结果:

enter image description here

答案 1 :(得分:5)

let alertController = UIAlertController(
    title: "Title",
    message: "Message",
    preferredStyle: UIAlertControllerStyle.Alert
)

let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in
    // ...
}

let okayAction = UIAlertAction(title: "OK", style: .Default) { (action) in
    // ...
}

alertController.addAction(okayAction)    
alertController.addAction(cancelAction)

self.presentViewController(alertController, animated: true) {
    // ...
}

答案 2 :(得分:2)

var alertController = UIAlertController(title: "Alert", message:"Message", preferredStyle: UIAlertControllerStyle.Alert)
let confirmed = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)
let cancel = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)

alertController.addAction(confirmed)
alertController.addAction(cancel)
self.presentViewController(alertController, animated: true, completion: nil)

重要的是最后一行" self.presentViewController"实际上显示你的警报。

希望它有效;)