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 to share
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 to share