Search code examples
swiftuiscrollviewios8mbprogresshud

MBProgressBarHUD not appearing with swift and iOS8


I'm trying to use MBProgressHUD (https://github.com/jdg/MBProgressHUD) and was able to get it working with my Podfile. However, now the hud 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)
    }

}

Solution

  • You are missing the part where you add the HUD to the 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)
        }
    
    }