快速警报视图(iOS8),单击确定和取消按钮,点击该按钮

时间:2014-08-26 17:40:00

标签: xcode dialog swift alert confirmation

我在Swift编写的Xcode中有一个警报视图,我想确定用户选择哪个按钮(它是一个确认对话框)什么都不做或者执行某些操作。 目前我有:

@IBAction func pushedRefresh(sender: AnyObject) {
        var refreshAlert = UIAlertView()
        refreshAlert.title = "Refresh?"
        refreshAlert.message = "All data will be lost."
        refreshAlert.addButtonWithTitle("Cancel")
        refreshAlert.addButtonWithTitle("OK")
        refreshAlert.show()
    }

我可能使用错误的按钮,请更正我,因为这对我来说都是新的。

谢谢!

7 个答案:

答案 0 :(得分:281)

如果您使用的是iOS8,则应使用UIAlertController - UIAlertView为deprecated

以下是如何使用它的示例:

var refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.Alert)

refreshAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
  print("Handle Ok logic here")
  }))

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
  print("Handle Cancel Logic here")
  }))

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

正如您所看到的,UIAlertAction的块处理程序处理按钮按下。这里有一个很棒的教程(尽管本教程不是使用swift编写的): http://hayageek.com/uialertcontroller-example-ios/

Swift 3更新:

let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.alert)

refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
    print("Handle Ok logic here")
}))

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
    print("Handle Cancel Logic here")
}))

present(refreshAlert, animated: true, completion: nil)

答案 1 :(得分:17)

var refreshAlert = UIAlertController(title: "Log Out", message: "Are You Sure to Log Out ? ", preferredStyle: UIAlertControllerStyle.Alert)

refreshAlert.addAction(UIAlertAction(title: "Confirm", style: .Default, handler: { (action: UIAlertAction!) in
    self.navigationController?.popToRootViewControllerAnimated(true)
}))

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) in

    refreshAlert .dismissViewControllerAnimated(true, completion: nil)


}))

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

答案 2 :(得分:3)

您可以使用UIAlertController

轻松完成此操作
1

参考:iOS Show Alert

答案 3 :(得分:2)

  

更新了swift 3:

//功能定义:

@IBAction func showAlertDialog(_ sender: UIButton) {
        // Declare Alert
        let dialogMessage = UIAlertController(title: "Confirm", message: "Are you sure you want to Logout?", preferredStyle: .alert)

        // Create OK button with action handler
        let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in
             print("Ok button click...")
             self.logoutFun()
        })

        // Create Cancel button with action handlder
        let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in
            print("Cancel button click...")
        }

        //Add OK and Cancel button to dialog message
        dialogMessage.addAction(ok)
        dialogMessage.addAction(cancel)

        // Present dialog message to user
        self.present(dialogMessage, animated: true, completion: nil)
    }

// logoutFun()函数definaiton:

func logoutFun()
{
    print("Logout Successfully...!")
}

答案 4 :(得分:0)

您可能要考虑使用 SCLAlertView ,替代 UIAlertView UIAlertController

UIAlertController仅在iOS 8.x或更高版本上有效,SCLAlertView是支持较早版本的好选择。

github以查看详细信息

示例:

let alertView = SCLAlertView()
alertView.addButton("First Button", target:self, selector:Selector("firstButton"))
alertView.addButton("Second Button") {
    print("Second button tapped")
}
alertView.showSuccess("Button View", subTitle: "This alert view has buttons")

答案 5 :(得分:0)

快速5的小更新:

let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertController.Style.alert)

    refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
          print("Handle Ok logic here")
    }))

    refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
          print("Handle Cancel Logic here")
    }))

    self.present(refreshAlert, animated: true, completion: nil)

答案 6 :(得分:-1)

非常简单
第 1 步

    class AppAlert: NSObject {
    
    //Singleton class
    static let shared = AppAlert()
    
    //MARK: - Delegate
    
    var onTapAction : ((Int)->Void)?
    
    //Simple Alert view
    public func simpleAlert(view: UIViewController, title: String?, message: String?){
        ToastManager.show(title: title ?? "", state: .error)
    }
    
    //Simple Alert view with button one
    public func simpleAlert(view: UIViewController, title: String, message: String, buttonTitle: String) {
        
        let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
        //okButton Action
        let okButton = UIAlertAction(title: buttonTitle, style: UIAlertAction.Style.default) {
            (result : UIAlertAction) -> Void in
            self.onTapAction?(0)
        }
        alert.addAction(okButton)
        view.present(alert, animated: true, completion: nil)
    }
    
    //Simple Alert view with two button
    public func simpleAlert(view: UIViewController, title: String, message: String, buttonOneTitle: String, buttonTwoTitle: String){
        let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
        
        //Button One Action
        let buttonOne = UIAlertAction(title: buttonOneTitle, style: UIAlertAction.Style.default) {
            (result : UIAlertAction) -> Void in
            self.onTapAction?(0)
        }
        
        //Button Two Action
        let buttonTwo = UIAlertAction(title: buttonTwoTitle, style: UIAlertAction.Style.default) {
            (result : UIAlertAction) -> Void in
            self.onTapAction?(1)
        }
        alert.addAction(buttonOne)
        alert.addAction(buttonTwo)
        view.present(alert, animated: true, completion: nil)
    }
    
}

第 2 步:调用为

AppAlert.shared.simpleAlert(view: self, title: "Register First", message: "Please Register to Proceed", buttonOneTitle: "Cancel", buttonTwoTitle: "OK")
        AppAlert.shared.onTapAction = { [weak self] tag in
            guard let self = self else {
                return
            }
            if tag == 0 {
               
            }else if tag == 1 {
                
            }
        }