我如何在Swift中创建UIAlertView?

我如何在Swift中创建UIAlertView?

我一直在努力在Swift中创建一个UIAlertView,但由于某种原因,我无法正确地说出这句话,因为我收到了这个错误:

找不到接受提供的参数的'init'的重载

这是我写的方式:

let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
                     delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)

然后打电话给我我正在使用:

button2Alert.show()

截至目前它正在崩溃,我似乎无法使语法正确。


有只小跳蛙
浏览 702回答 4
4回答

梵蒂冈之花

在Swift 4.2和Xcode 10中方法1:简单的警告let alert = UIAlertController(title: "Your title", message: "Your message", preferredStyle: .alert)      let ok = UIAlertAction(title: "OK", style: .default, handler: { action in      })      alert.addAction(ok)      let cancel = UIAlertAction(title: "Cancel", style: .default, handler: { action in      })      alert.addAction(cancel)      DispatchQueue.main.async(execute: {         self.present(alert, animated: true)})方法2:警告共享类别如果你想要共享类的风格(写一次使用的地方)import UIKitclass SharedClass: NSObject {//This is shared classstatic let sharedInstance = SharedClass()     //Show alert     func alert(view: UIViewController, title: String, message: String) {         let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)         let defaultAction = UIAlertAction(title: "OK", style: .default, handler: { action in         })         alert.addAction(defaultAction)         DispatchQueue.main.async(execute: {             view.present(alert, animated: true)         })     }     private override init() {     }}现在在每件商品中都会调出这样的提醒SharedClass.SharedInstance.alert(view: self, title: "Your title here", message: "Your message here")方法3:现在警告所有WINDOWS如果要在所有视图之上显示警报,请使用此代码func alertWindow(title: String, message: String) {     DispatchQueue.main.async(execute: {         let alertWindow = UIWindow(frame: UIScreen.main.bounds)         alertWindow.rootViewController = UIViewController()         alertWindow.windowLevel = UIWindowLevelAlert + 1         let alert2 = UIAlertController(title: title, message: message, preferredStyle: .alert)         let defaultAction2 = UIAlertAction(title: "OK", style: .default, handler: { action in         })         alert2.addAction(defaultAction2)         alertWindow.makeKeyAndVisible()         alertWindow.rootViewController?.present(alert2, animated: true, completion: nil)     })}功能调用SharedClass.sharedInstance.alertWindow(title:"This your title", message:"This is your message")方法4:通过扩展提醒extension  UIViewController {     func showAlert(withTitle title: String, withMessage message:String) {         let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)         let ok = UIAlertAction(title: "OK", style: .default, handler: { action in         })         let cancel = UIAlertAction(title: "Cancel", style: .default, handler: { action in         })         alert.addAction(ok)         alert.addAction(cancel)         DispatchQueue.main.async(execute: {             self.present(alert, animated: true)         })     }}现在这样打电话//Call showAlert function in your class@IBAction func onClickAlert(_ sender: UIButton) {     showAlert(withTitle:"Your Title Here", withMessage: "YourCustomMessageHere")}方法5:与TEXTFIELDS一起提醒如果要添加文本字段以提醒。//Global variablesvar name:String?var login:String?//Call this function like this:  alertWithTF() //Add textfields to alert func alertWithTF() {     let alert = UIAlertController(title: "Login", message: "Enter username&password", preferredStyle: .alert)     // Login button     let loginAction = UIAlertAction(title: "Login", style: .default, handler: { (action) -> Void in         // Get TextFields text         let usernameTxt = alert.textFields![0]         let passwordTxt = alert.textFields![1]         //Asign textfileds text to our global varibles         self.name = usernameTxt.text        self.login = passwordTxt.text        print("USERNAME: \(self.name!)\nPASSWORD: \(self.login!)")     })     // Cancel button     let cancel = UIAlertAction(title: "Cancel", style: .destructive, handler: { (action) -> Void in })     //1 textField for username     alert.addTextField { (textField: UITextField) in         textField.placeholder = "Enter username"         //If required mention keyboard type, delegates, text sixe and font etc...         //EX:         textField.keyboardType = .default     }     //2nd textField for password     alert.addTextField { (textField: UITextField) in         textField.placeholder = "Enter password"         textField.isSecureTextEntry = true     }     // Add actions     alert.addAction(loginAction)     alert.addAction(cancel)     self.present(alert, animated: true, completion: nil)}方法6:带扩展的SharedClass中的警报//This is your shared classimport UIKit  class SharedClass: NSObject {  static let sharedInstance = SharedClass()  //Here write your code....  private override init() {  }}//Alert function in shared classextension UIViewController {     func showAlert(title: String, msg: String) {         DispatchQueue.main.async {             let alert = UIAlertController(title: title, message: msg, preferredStyle: .alert)             alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))             self.present(alert, animated: true, completion: nil)         }     }}现在直接这样打电话self.showAlert(title: "Your title here...", msg: "Your message here...")方法7:在单独的类中使用扩展的共享类进行警报提醒。创建一个新的Swift类,和import UIKit。复制并粘贴下面的代码。//This is your Swift new class fileimport UIKitimport Foundationextension UIAlertController {     class func alert(title:String, msg:String, target: UIViewController) {         let alert = UIAlertController(title: title, message: msg, preferredStyle: UIAlertControllerStyle.alert)         alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default) {         (result: UIAlertAction) -> Void in         })         target.present(alert, animated: true, completion: nil)     }}现在在所有类中调用这样的警报功能(单行)。UIAlertController.alert(title:"Title", msg:"Message", target: self)如何....
打开App,查看更多内容
随时随地看视频慕课网APP