我想创建以下UIAlertAction
:
@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
已初始化为title
,message
,是否更喜欢将其显示为提醒或操作表。
按下按钮时,我想显示提醒,但alert.show()
无效。为什么我的代码不起作用?
答案 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)
产生您之后的结果:
答案 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"实际上显示你的警报。
希望它有效;)