2014-12-10 8 views
0

을 업데이트 할 수 없습니다 :AFNetworking + MBProgressHUD 나는 이런 식으로 뭔가 쓴 내의 ViewController의의 viewDidLoad 메서드에서 HUD 상태

- (void)viewDidLoad { 
[super viewDidLoad]; 

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

는 기본적으로 나는 HUD를 표시하고의 ViewController를 전달, 다른 클래스에 메소드 loadNewsData을 시작합니다.

다른 클래스의 방법은 다음과 같이이다 :

-(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의 하위 메뉴를보기 위해 기다리고 있었다 시작 "업데이트 소식 ". 그러나 아무 일도 일어나지 않습니다. 프로세스가 끝나면 Finished가 표시됩니다. 요청이 10 초 정도 걸리므로 "업데이트 소식"을 보길 기대했지만 아무것도하지 않았습니다. 나는이에 또한 시도 : 나는 UI 큐에 있어야

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

생각 몇 가지 UI 물건을 업데이트 할 수 있지만,이 중 하나가 작동하지 않았다. 나는 초보자 일거야. 아마도 나는 뭔가를 놓친다.

좋은 조언을 주셔서 감사합니다.

+0

"로드 중"을 "업데이트 중"으로 변경하면 문제가 없습니다. 다소 "로드 중"이라고 여겨집니다. – Zhang

+0

'viewController'를'serverData' 헬퍼 객체에 전달하지 않을 것입니다. VC에서'loadNewsData'를 호출하는 메소드가 있고 UI를 업데이트 할 수있는 완료 블록이 있다면 더 좋습니다. 위의 설명과 같이 "로드 중"과 "새로드 중"의 차이점은 무엇입니까? – Koen

답변

1

GET 요청을 시작하기 전에 loadViewController.hud.detailsLabelText = @"updating news";으로 이동하십시오. 이것을 성공 블록 안에두면 텍스트가 표시되지 않습니다.

+0

안녕하세요, 블록 내부에서 변경하고 싶습니다. – NiBE

+0

하지만 네트워크 호출이 끝나면 성공 블록이 실행되기 때문에 할 수 없습니다. "@"뉴스 업데이트 "는 즉시 @로 바뀝니다." –

+0

@GonjiDev가 옳습니다. 성공 블록이 실행되면 모든 데이터가 이미로드되었습니다. 대안은 AFNetworking에 진행 블록이있는 경우 진행 블록을 사용하는 것입니다. 아니면 NSURLConnection을 조사해야합니다. – jsetting32

0

이 링크는 ... 당신을 도움이 될 것입니다

그것은 사용하는있는 NSURLConnection 위임 방법을 설명하고 정확한 상황에 대한 귀하의 그것을 사용하는 방법. 나는 이것이 AFNetworking 솔루션이 아니라는 것을 이해하지만, 경우 NSURLConnection 아직도 AFNetworking 솔루션을 찾고 있다면이 방법을 확인하십시오 - (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block;.

희망 사항은 올바른 방향으로 이동하기를 바랍니다.