我如何在Swift中创建UIAlertView?我一直在努力在Swift中创建一个UIAlertView,但由于某种原因,我无法正确地说出这句话,因为我收到了这个错误:找不到接受提供的参数的'init'的重载这是我写的方式:let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)然后打电话给我我正在使用:button2Alert.show()截至目前它正在崩溃,我似乎无法使语法正确。
4 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
在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)
如何....
- 4 回答
- 0 关注
- 818 浏览
添加回答
举报
0/150
提交
取消
