How to create uialertcontroller in global swift

后端 未结 12 1690
情深已故
情深已故 2020-12-05 12:09

I\'m trying to create uialertcontroller in Config.swift file as follow.

static func showAlertMessage(titleStr:String, messageStr:St         


        
相关标签:
12条回答
  • 2020-12-05 12:34

    This is also the way you can present on top of the View Controller available.

    UIApplication.topViewController()?.present(alertViewController!, animated: true, completion: nil)

    0 讨论(0)
  • 2020-12-05 12:36

    I am suggest you write this code, but if you really need, try this:

    static func showAlertMessage(titleStr:String, messageStr:String) -> Void {
        let alert = UIAlertController(title: titleStr, message: messageStr, preferredStyle: UIAlertControllerStyle.Alert);
        if let viewController = UIApplication.sharedApplication().windows.first?.rootViewController as UIViewController? {
            viewController.presentViewController(alert, animated: true, completion: nil)
        }
    }
    

    At least it won't break down.

    @Eric D better answer.

    0 讨论(0)
  • 2020-12-05 12:37

    You can use my Utility class created for Show Alert in Swift4. Its super easy to use just by writing single line of code:

    Show Simple Alert

    @IBAction func showDefaultAlert(_ sender: Any) {
    
      Alert.showAlert(title:"Alert", message:"Default Alert")
    
    }
    

    Demo code link: https://github.com/smindia1988/EasyAlertInSwift4

    0 讨论(0)
  • 2020-12-05 12:42

    Please refer the below GIT Example

    https://github.com/amilaim/CommonAlertView

    //  ViewController.swift
    //  CommonAlertView
    //
    //  Created by Amila Munasinghe on 4/25/17.
    //  Copyright © 2017 Developer Insight. All rights reserved.
    //
    import UIKit
    
    class ViewController: UIViewController,AlertViewControllerDelegate {
    
    @IBOutlet weak var AlertViewResultTextOutlet: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    @IBAction func ShowAlertAction(_ sender: Any) {
    
        let alert = AlertViewController.sharedInstance
        alert.delegate = self
        alert.SubmitAlertView(viewController: self,title: "Developer Insight", message: "Please enter any text value")
    
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
    func SubmitAlertViewResult(textValue : String) {
    
        AlertViewResultTextOutlet.text = textValue
    
     } 
    }
    

    Common UIAlertViewController Implementation

    import UIKit
    
    protocol AlertViewControllerDelegate {
    func SubmitAlertViewResult(textValue : String)
     }
    
    class AlertViewController {
    
    static let sharedInstance = AlertViewController()
    
    private init(){}
    
    var delegate : AlertViewControllerDelegate?
    
    func SubmitAlertView(viewController : UIViewController,title : String, message : String){
    
        let alert = UIAlertController(title: title,
                                      message: message,
                                      preferredStyle: .alert)
    
        // Submit button
        let submitAction = UIAlertAction(title: "Submit", style: .default, handler: { (action) -> Void in
            // Get 1st TextField's text
            let textField = alert.textFields![0]
    
            if(textField.text != "")
            {
                self.delegate?.SubmitAlertViewResult(textValue: textField.text!)
            }
    
        })
    
        // Cancel button
        let cancel = UIAlertAction(title: "Cancel", style: .destructive, handler: { (action) -> Void in })
    
    
        // Add 1 textField and cutomize it
        alert.addTextField { (textField: UITextField) in
            textField.keyboardAppearance = .dark
            textField.keyboardType = .default
            textField.autocorrectionType = .default
            textField.placeholder = "enter any text value"
            textField.clearButtonMode = .whileEditing
    
        }
    
        // Add action buttons and present the Alert
        alert.addAction(submitAction)
        alert.addAction(cancel)
        viewController.present(alert, animated: true, completion: nil)
    
     }
    
    }
    
    0 讨论(0)
  • 2020-12-05 12:43

    I suggest creating an extension:

    extension UIViewController {
        func showAlertMessage(titleStr:String, messageStr:String) {
            let alert = UIAlertController(title: titleStr, message: messageStr, preferredStyle: UIAlertControllerStyle.Alert)
           self.presentViewController(alert, animated: true, completion: nil)
        }
    }
    
    0 讨论(0)
  • 2020-12-05 12:43

    What I'm using based on the solution by @William Hu:

    func popup(caller:UIViewController, style:UIAlertControllerStyle? = UIAlertControllerStyle.alert,
            title:String, message:String, buttonTexts:[String], buttonStyles:([UIAlertActionStyle?])? = nil,
            handlers:[((UIAlertAction) -> Void)?], animated:Bool? = nil, completion: (() -> Void)? = nil) {
        let alert = UIAlertController(title: title, message: message, preferredStyle: style!)
        for i in 0..<buttonTexts.count {
            alert.addAction(UIAlertAction(title: buttonTexts[i],
                style: (buttonStyles == nil || i >= buttonStyles!.count || buttonStyles![i] == nil ?
                    UIAlertActionStyle.default : buttonStyles![i]!),
                handler: (i >= handlers.count || handlers[i] == nil ? nil : handlers[i]!)))
        }
        caller.present(alert, animated: animated != nil ? animated! : true, completion: completion)
    }
    
    1. Single function gives Alert by default and can optionally be used for ActionSheet.
    2. Arrays buttonTexts, buttonStyles and handlers can be of unequal sizes as per requirement.
    3. Actions can be styled.
    4. Animated can be specified.
    5. Optional block can be specified to be executed when presentation finishes.

    Usage:

    popup(caller: self, style: UIAlertControllerStyle.alert,
            title: "Title", message: "Message",
            buttonTexts: ["Destructive", "Cancel", "OK"],
            buttonStyles: [UIAlertActionStyle.destructive, UIAlertActionStyle.cancel],
            handlers: [nil], animated: false)
    
    0 讨论(0)
提交回复
热议问题