MBProgressBarHUD not showing with swift and iOS8

I am trying to use MBProgressHUD ( https://github.com/jdg/MBProgressHUD ) and was able to get it to work with my subfile. However, now the hadd does not appear. Has anyone been able to successfully get this working with swift?

Podfile

platform :ios, '8.0'
pod 'AFNetworking'
pod 'MBProgressHUD', '~> 0.8'

      

MovieDetailViewController.swift

override func viewDidLoad() {
    super.viewDidLoad() // Do any additional setup after loading the view.
    var url: String = "http://api.rottentomatoes.com/api/public/v1.0/movies/"+movieID!+".json?apikey="+apiKey
    NSLog("url = \(url)")
    var request = NSURLRequest(URL: NSURL(string: url))

    // setup HUD; https://github.com/jdg/MBProgressHUD
    var hud = MBProgressHUD()
    hud.show(true)

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue() )     
    {
        (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in

        var err: NSError?
        var object = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &err) as NSDictionary

        if let yearInt = object["year"] as? Int {
            self.year.text = String(yearInt)
        }
        self.title = object["title"] as? String
        self.movieTitle.text = self.title

        self.synopsis.text = object["synopsis"] as? String
        self.mpaaRating.text = object["mpaa_rating"] as? String
        var ratings = object["ratings"] as NSDictionary
        var posters = object["posters"] as NSDictionary

        // setup background picture
        var posterUrl = posters["thumbnail"] as String
        var image = UIImageView()
        image.setImageWithURL(NSURL(string: posterUrl))
        image.contentMode = UIViewContentMode.ScaleAspectFill
        self.scrollView.backgroundColor = UIColor.clearColor()
        self.scrollView.addSubview(image)

        // stop the hud
        hud.hide(true)
    }

}

      

+3


source to share


2 answers


You are missing the part where you add the HUD to Window

or the current view ( self.view

).



override func viewDidLoad() {
    super.viewDidLoad() // Do any additional setup after loading the view.
    var url: String = "http://api.rottentomatoes.com/api/public/v1.0/movies/"+movieID!+".json?apikey="+apiKey
    NSLog("url = \(url)")
    var request = NSURLRequest(URL: NSURL(string: url))

    // setup HUD; https://github.com/jdg/MBProgressHUD
    var hud = MBProgressHUD.showHUDAddedTo(self.view, animated: true)

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue() )     
    {
        (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in

        var err: NSError?
        var object = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &err) as NSDictionary

        if let yearInt = object["year"] as? Int {
            self.year.text = String(yearInt)
        }
        self.title = object["title"] as? String
        self.movieTitle.text = self.title

        self.synopsis.text = object["synopsis"] as? String
        self.mpaaRating.text = object["mpaa_rating"] as? String
        var ratings = object["ratings"] as NSDictionary
        var posters = object["posters"] as NSDictionary

        // setup background picture
        var posterUrl = posters["thumbnail"] as String
        var image = UIImageView()
        image.setImageWithURL(NSURL(string: posterUrl))
        image.contentMode = UIViewContentMode.ScaleAspectFill
        self.scrollView.backgroundColor = UIColor.clearColor()
        self.scrollView.addSubview(image)

        // stop the hud
        MBProgressHUD.hideAllHUDsForView(self.view, animated: true) // Or just call hud.hide(true)
    }

}

      

+3


source


I have a function like this:

func showLoadingSpinner() {
    let loading = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
    loading.mode = MBProgressHUDModeDeterminate
    loading.labelText = "Loading...";
}

      

... which I called before making the asynchronous call, and then when I finished processing the response, I call this function to hide it:



MBProgressHUD.hideHUDForView(self.view, animated: true)

      

Also make sure you import the .h file into your bridging header file, for example:

#import "MBProgressHUD.h"

      

+3


source







All Articles