AFNetworking + MBProgressHUD无法更新HUD状态

时间:2014-12-10 08:23:06

标签: ios objective-c afnetworking-2 mbprogresshud

在我的viewController的viewDidLoad方法中,我写了这样的东西:

- (void)viewDidLoad {
[super viewDidLoad];

self.hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
self.hud.labelText = @"Loading";
[serverData loadNewsData:self ];
 }

基本上我展示了HUD并在另一个类上启动方法loadNewsData,传递了viewController。

另一类中的方法是这样的:

 -(void)loadNewsData:(LoadViewController*) loadViewController
  {

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:[siteAddress stringByAppendingString:getNewsList] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {


    loadViewController.hud.detailsLabelText = @"updating news";

    [NewsModel setNewsData:responseObject];
     loadViewController.hud.detailsLabelText = @"Finished";

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

}

当AFHTTPRequestOperation的请求开始时,我希望在“更新新闻”中看到HUD中的子菜单更改。但没有任何反应。我只是看到在完成过程结束时完成。请求需要10秒,所以我期待看到“更新新闻”,但没有。 我也试着这个:

 dispatch_async(dispatch_get_main_queue(), ^{
       loadViewController.hud.detailsLabelText = @"updating news"; });

认为我必须在UI队列中更新一些UI内容,但它也不起作用。 我是新手,可能我想念一些东西。

感谢任何好的建议。

2 个答案:

答案 0 :(得分:1)

尝试在启动GET请求之前移动loadViewController.hud.detailsLabelText = @"updating news";。如果你把它保留在成功块中,你就不会看到文字。

答案 1 :(得分:0)

此链接可以帮助您... NSURLConnection

它描述了要使用的NSURLConnection委托方法以及如何将其用于您的确切情况。我知道这不是AFNetworking解决方案,但如果您仍在寻找AFNetworking解决方案,请查看此方法{ {1}}。

希望这能让你走上正轨。