我正在尝试使用MBProgressHUD(https://github.com/jdg/MBProgressHUD),并且能够使用我的Podfile。但是,现在没有出现hud。有没有人能够成功地使用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)
}
}
答案 0 :(得分:3)
您缺少将HUD添加到Window
或当前视图(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)
}
}
答案 1 :(得分:3)
我有这样的功能:
func showLoadingSpinner() {
let loading = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
loading.mode = MBProgressHUDModeDeterminate
loading.labelText = "Loading...";
}
...我在进行异步调用之前就调用过,然后当我完成处理响应时,我调用此函数来隐藏它:
MBProgressHUD.hideHUDForView(self.view, animated: true)
另外,请确保在.bridging-header文件中导入.h文件,如下所示:
#import "MBProgressHUD.h"