我是一名新的IOS开发人员,对Objective C的经验不多,但现在我开始学习swift了。
我正在制作一个具有许多不同基本功能的测试应用程序,因此我可以习惯该语言,并且我遇到了一些AlertViews的问题。我试图将功能添加到AlertView(而不是AlertController)。我有这方面的代码,我没有收到任何错误,但是当我按下警报视图中的按钮时,该功能根本不运行。这是代码:
@IBAction func Alert(sender: UIButton) {
var alertView:UIAlertView = UIAlertView()
alertView.title = "Alert!"
alertView.message = "Greg is Cool"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.addButtonWithTitle("Okay")
alertView.show()
}
func alert(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) {
switch buttonIndex {
default:
if (alertView.tag == 1) {
NameLabel.text = "I get it!"
}
}
}
我也在尝试了解如何在AlertView中提供TextField。我虽然没有这个功能的代码。
如果您对如何使这些功能有效,请告诉我们。谢谢!
答案 0 :(得分:0)
您没有设置alertView的标记。所以if (alertView.tag == 1)
将是假的
您可以设置alertViewStyle = PlainTextInput
,它将有一个文本字段
关于alertViewStyle,请查看您将获得的文件:
enum UIAlertViewStyle : Int {
case Default
case SecureTextInput
case PlainTextInput
case LoginAndPasswordInput
}
所以改变如下,你的代码应该工作:
@IBAction func Alert(sender: UIButton) {
var alertView:UIAlertView = UIAlertView()
alertView.title = "Alert!"
alertView.message = "Greg is Cool"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.addButtonWithTitle("Okay")
alertView.tag = 1
alertView.alertViewStyle = .PlainTextInput
alertView.show()
}
func alert(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) {
switch buttonIndex {
default:
if (alertView.tag == 1) {
NameLabel.text = "I get it!"
}
}
}
答案 1 :(得分:0)
我通常犯的错误是编写所有代码并放置按钮,但忘记连接两个。是否填写了代码左侧的圆圈,表示您已告知系统哪个按钮应该运行该代码?
答案 2 :(得分:0)
来自UIAlertView类:
// UIAlertView is deprecated. Use UIAlertController with a preferredStyle of
UIAlertControllerStyleAlert
在iOS 8上,您可以这样做:
var alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
现在,UIAlertController是一个单独的类,用于在iOS 8上创建和交互我们所知的UIAlertViews和UIActionSheets。
编辑:处理行动:
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { action in
switch action.style{
case .Default:
println("default")
case .Cancel:
println("cancel")
case .Destructive:
println("destructive")
}
}))
答案 3 :(得分:0)
您使用的方法是在iOS 8之前。但我会告诉您我的方式,无论如何。
添加此功能:
func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) {
var title: NSString = alertView.buttonTitleAtIndex(buttonIndex)
if title.isEqualToString("OK") {
NameLabel.text = "I get it!"
}
}
如果你想以现代的方式做到这一点,那就是这样做的方法:
var alert = UIAlertController(title: "Alert!", message: "Greg is cool", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler:{ (ACTION :UIAlertAction!)in
NameLabel.text = "I get it!"
}))
alert.addAction(UIAlertAction(title: "Okay", style: UIAlertActionStyle.Cancel, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)