2014-04-04 2 views
1

내 앱에서 MBProgressHUD를 사용하여 앱이 네트워크를 기다릴 때 사용자에게 더 분명하게 전달합니다.진행 상태의 iOS 네트워크 활동 표시기 HUD

내 앱이 MBProgressHUD를 호출하여 산재 해 있습니다.

예 :

[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    [User findBy:@{@"email": email} success:^(NSDictionary *user) { 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 

그래서 모든 네트워크 호출이 MBprogress 쇼에 싸여하고 숨길 수 있습니다. 더 깨끗한 방법이 있어야합니다.

전역 수준에서 네트워크 작업이있을 때 HUD가 켜지면 HUD가 중지되면 HUD가 꺼지도록이 작업을 수행하고 싶습니다.

HUD를 iPhone 네트워크 활동 표시기가 수행하는 것과 어떻게 모방 할 수 있습니까?

이 경우 API가 표시되지 않았습니다.

참고 : AFNetworking 2.0을 사용 중입니다.

답변

1

간단해야합니다.

  1. 당신은 모든 또는 대부분의 요청은 아마 AFnetworking 요청의 구현에 (사용하는 "최고"대부분의 방법을 찾을 필요가있다.
  2. HUD를 제시 응용 프로그램 창을 사용 그래서 당신은 표시 할 수 있습니다 . 그것은 당신에서 AFNetworking 클래스 단순히 클래스에이 두 방법을 추가 -

    + (MBProgressHUD *)showNetworkHUDWithTitle:(NSString *)title { 
         UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject]; 
         [MBProgressHUD hideAllHUDsForView:window animated:YES]; 
         MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:window animated:YES]; 
         hud.labelText = title; 
         return hud; 
        } 
    
        + (void)dismissNetworkHUD { 
         UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject]; 
         [MBProgressHUD hideHUDForView:window animated:YES]; 
        } 
    

당신은 또한 방법 "동안 쇼"MBProgressHUD 중 하나를 확인하실 수 있습니다 -

- (id) showAnimated : (BOOL) animated whileExecutingBlock : (dispatch_block_t) 블록;

- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block completionBlock:(MBProgressHUDCompletionBlock)completion; 

- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block onQueue:(dispatch_queue_t)queue; 

- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block onQueue:(dispatch_queue_t)queue 
      completionBlock:(MBProgressHUDCompletionBlock)completion; 

이렇게하면 실행이 끝날 때 허드가 사라집니다.

+0

전역 코드를 사용하여 모델로 호출을 이동했습니다. 이 방법이 더 좋지만 이상적으로 mbprogress 코드를 한 번만 설정하는 것이 좋습니다. 모든 모델 네트워크 방법에서 설정되지 않습니다. 모델의 상속 네트워크 클래스를 만들고 거기에서 mbprogress를 호출 할 수는 있지만 mbprogress를 해제하는 방법을 알 수있는 방법은 없습니다. 즉, 내가 볼 수있는 AFNetworking의 대리자 콜백이 없습니다. 예를 들어, NetworkObject -> ModelObject -> ControllerObject와 같이 3 개의 성공/실패 블록 호출을 연결할 수 있습니다. 그런 식으로 MBB 진행을 끌 수있는 콜백을 얻을 수는 있지만 엉망입니다. – djburdick

+0

내 대답 업데이트 – shannoga

+0

안녕하세요 @ djburdick 그게 도움이 되었습니까? – shannoga