MBProgressBarHUD没有出现在swift和iOS8上

时间:2014-09-26 03:34:05

标签: swift uiscrollview ios8 mbprogresshud

我正在尝试使用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)
    }

}

2 个答案:

答案 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"