如何使用Swift iOS向UIAlertView按钮添加动作

Ste*_*Fox 38 uialertview ios swift

我想添加"确定"按钮以外的其他按钮,它应该只是关闭警报.我想要另一个按钮来调用某个功能.

var logInErrorAlert: UIAlertView = UIAlertView()
logInErrorAlert.title = "Ooops"
logInErrorAlert.message = "Unable to log in."
logInErrorAlert.addButtonWithTitle("Ok")
Run Code Online (Sandbox Code Playgroud)

如何在此警报中添加另一个按钮,然后允许它在点击后调用一个函数,让我们说我们想要新的按钮来调用:

 retry()
Run Code Online (Sandbox Code Playgroud)

Jak*_*ake 152

Swifty方式是使用新的UIAlertController和闭包:

    // Create the alert controller
    let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .Alert)

    // Create the actions
    let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) {
        UIAlertAction in
        NSLog("OK Pressed")
    }
    let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) {
        UIAlertAction in
        NSLog("Cancel Pressed")
    }

    // Add the actions
    alertController.addAction(okAction)
    alertController.addAction(cancelAction)

    // Present the controller
    self.presentViewController(alertController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

    // Create the alert controller
    let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert)

    // Create the actions
    let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) {
        UIAlertAction in
        NSLog("OK Pressed")
    }
    let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) {
        UIAlertAction in
        NSLog("Cancel Pressed")
    }

    // Add the actions
    alertController.addAction(okAction)
    alertController.addAction(cancelAction)

    // Present the controller
    self.present(alertController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,我目前正在使用iOS 7.1,而UIAlertController仅适用于iOS 8.0 +.所以我必须使用UIAlertView (9认同)
  • 我完全按照你这样做,但错误没有出现,而是在日志中显示"警告,尝试在<_TtC13NSAlert_Swift14ViewController:0x7c888f50>上显示<UIAlertController:0x7be278a0>,其视图不在窗口层次结构中!" 不知道是什么问题? (4认同)

Che*_*tan 14

func showAlertAction(title: String, message: String){
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
    alert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default, handler: {(action:UIAlertAction!) in
        print("Action")
    }))
    alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.default, handler: nil))
    self.present(alert, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)


ilu*_*pra 7

UIAlertViews 使用委托与客户沟通.

您添加第二个按钮,然后创建一个对象以从视图接收委托消息:

class LogInErrorDelegate : UIAlertViewDelegate {

    init {}

    // not sure of the prototype of this, you should look it up
    func alertView(view :UIAlertView, clickedButtonAtIndex :Integer) -> Void {
        switch clickedButtonAtIndex {
            case 0: 
               userClickedOK() // er something
            case 1:
               userClickedRetry()
              /* Don't use "retry" as a function name, it's a reserved word */

            default:
               userClickedRetry()
        }
    }

    /* implement rest of the delegate */
}
logInErrorAlert.addButtonWithTitle("Retry")

var myErrorDelegate = LogInErrorDelegate()
logInErrorAlert.delegate = myErrorDelegate
Run Code Online (Sandbox Code Playgroud)


Sha*_*med 6

斯威夫特 5+

let alert = UIAlertController(title: "Cart!", message: "Are you sure want to remove order details?", preferredStyle: .alert)
        // Create the actions
let okAction = UIAlertAction(title: "YES", style: 
    UIAlertAction.Style.default) {
       UIAlertAction in
       print("Yes Pressed")
}
let cancelAction = UIAlertAction(title: "CANCEL", style: 
    UIAlertAction.Style.cancel) {
       UIAlertAction in
       print("Cancel Pressed")
    }
// Add the actions
alert.addAction(okAction)
alert.addAction(cancelAction)

self.present(alert, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

或者

let alert = UIAlertController(title: "Alert!", message: "Are you sure want to remove your request?", preferredStyle: .alert)
                // Create the actions
        let okAction = UIAlertAction(title: "YES", style: .destructive) {
               _ in
               print("Yes Pressed")
            self.funRemoveRequest(requestID: (self.requestStatusModel?.data?[sender.tag].id)!)
        }
        let cancelAction = UIAlertAction(title: "CANCEL", style: .cancel) {
               _ in
               print("Cancel Pressed")
            }
        // Add the actions
        alert.addAction(okAction)
        alert.addAction(cancelAction)

        self.present(alert, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)