Swift:UIAlertView按钮按下动作不起作用

时间:2014-10-13 03:18:03

标签: ios swift uialertview

我是一名新的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。我虽然没有这个功能的代码。

如果您对如何使这些功能有效,请告诉我们。谢谢!

4 个答案:

答案 0 :(得分:0)

  1. 您没有设置alertView的标记。所以if (alertView.tag == 1)将是假的

  2. 您可以设置alertViewStyle = PlainTextInput,它将有一个文本字段

  3. 关于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)