【发布时间】:2014-12-10 08:23:06
【问题描述】:
在我的 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 内容,但它也不起作用。 我是新手,可能我错过了什么。
感谢任何好的建议。
【问题讨论】:
-
如果你把“加载”改为“更新新闻”就不会有问题吧?有点“加载”看起来有点多余。
-
我不会将
viewController传递给serverData辅助对象。我认为最好在你的 VC 中有一个调用loadNewsData的方法并有一个完成块,你可以在其中更新 UI。正如上面的评论,“加载”和“更新新”有什么区别?
标签: ios objective-c afnetworking-2 mbprogresshud