ios – 如何在服务器未返回数据时停止MBProgressHUD并添加子视图

ios – 如何在服务器未返回数据时停止MBProgressHUD并添加子视图,第1张

概述在我的应用程序中,我有这个类从我的服务器获取数据: class Api{func loadOffers(completion:(([Offers])-> Void), offer_id: String, offerStatus:String){ let myUrl = NSURL(string: "http://www.myServer.php/api/v1.0/offers.ph 在我的应用程序中,我有这个类从我的服务器获取数据:
class API{func loadOffers(completion:(([Offers])-> VoID),offer_ID: String,offerStatus:String){    let myUrl = NSURL(string: "http://www.myServer.PHP/API/v1.0/offers.PHP")    let request = NSMutableURLRequest(URL: myUrl!)    request.httpMethod = "POST"    let poststring = "offer_ID=\(offer_ID)&offerStatus=\(dealStatus)&action=show"    request.httpBody = poststring.dataUsingEnCoding(NSUTF8StringEnCoding,allowLossyConversion: true)    let task = NSURLSession.sharedSession().dataTaskWithRequest(request)        { data,response,error in                          if error != nil {                                  println("error\(error)")                             }else{                  var err:NSError?               let JsonObject : AnyObject! = NSJsONSerialization.JsONObjectWithData(data,options: NSJsONReadingOptions.MutableContainers,error: nil)                if let dict = JsonObject as? [String: AnyObject] {                if let myOffers = dict["offers"] as? [AnyObject] {                var offers = [Offers]()                for offer in myOffers{                let offer = Offers(dictionary: offer as! NSDictionary)                offers.append(offer)                                       let priority = disPATCH_QUEUE_PRIORITY_DEFAulT                                    dispatch_async(dispatch_get_global_queue(priority,0 )){                                                                                   dispatch_async(dispatch_get_main_queue()){                completion(offers)                             }                                    }                                                        }                    }                }                            }                  }    task.resume()          } }

然后在我的VIEw Controller中加载模型:

class MyVIEwController: UIVIEwController,UItableVIEwDataSource,UItableVIEwDelegate {    var offers: [Offers]!    func loadModel() {    let loadingNotification = MBProgressHUD.showHUDAddedTo(self.vIEw,animated: true)    loadingNotification.mode = MBProgressHUDMode.Indeterminate    loadingNotification.labelText = "updating your offers..."    offers = [Offers]()    let API = API()    API.loadOffers(dIDLoadOffers,offer_ID: dealIDent!,offerStatus: "open")    }    func dIDLoadOffers(offers:[Offers]){    self.offers = offers    self.tableVIEw.reloadData()    MBProgressHUD.hIDeAllHUDsForVIEw(self.vIEw,animated: true)    self.refreshControl.endRefreshing()    }    overrIDe func vIEwWillAppear(animated: Bool) {    loadModel()    } }

除了当JsON字典为空时,一切都有效,这意味着没有提供MBProgressHUD保持旋转.

我想停止活动指示器添加一个子视图,而不是说没有优惠.任何建议将不胜感激.

我试过了:

if offers.isEmpty {
MBProgressHUD.hIDeAllHUDsForVIEw(self.vIEw,animated:true)
}

并且

if offers == 0 {
MBProgressHUD.hIDeAllHUDsForVIEw(self.vIEw,animated:true)
}

但它不起作用

谢谢

解决方法 发生这种情况是因为您在主队列中设置了HUD,但正试图从另一个队列中删除.所有与UI相关的更改都应该在main_queue()中完成

尝试使用此代码

dispatch_async(dispatch_get_main_queue(),{   // your code to modify HUD here});
总结

以上是内存溢出为你收集整理的ios – 如何在服务器未返回数据时停止MBProgressHUD并添加子视图全部内容,希望文章能够帮你解决ios – 如何在服务器未返回数据时停止MBProgressHUD并添加子视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1103431.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存