iOS2012. 8. 27. 10:51

UIProgressHUD / 어플 실행 및 , 데이터 호출시 "로딩중" 메세지처리



아이폰 어플은 거의 대부분 로딩중이라는 메세지가 나타나길레.. 대부분 자동으로 처리되는줄 알았습니다..
그런데;;; 아니더군요 -_-;;

UIActivaityIndicatorView 의 경우 별도 스타일이나 지원되는 것이 있는듯하나..


모두다 호출전 출력 / 호출후 출력.. 노가다를 통해 진행한듯합니다
아직 잘은 모르겠지만. 

앱을 이용하는 이용자가 마냥 기다리지않도록 처리해야하는 로딩메세지는 상당히 중요한 UI중에 하나인데요


여러책에도 나왔지만 구체적으로 어떤 방법으로 처리되는지 나와있는게 없어 포스팅합니다.



보통 "Delegate -> 메인뷰 -> 서브뷰" 형태로 진행이되는데요

우선 메인뷰에 적용한 소스입니다.

해당 소스를 Delegate 에 동일하게 추가하셔도 이용이 가능합니다

============= 헤더파일 ==================
#import <UIKit/UIKit.h>

//프로그래스 - 로딩메세지
@interface UIProgressHUD : NSObject
- (UIProgressHUD *) initWithWindow: (UIView*)aWindow; 
- (void) show: (BOOL)aShow;
- (void) done;
- (void) hide;
- (void) setText: (NSString*)aText; 
@end

@interface MainView : UIViewController{
    UIProgressHUD *hud;
}


@end
=====================================
상위 @interface UIProgressHUD : NSObject 부분부터 @end 까지 별도 해당 소스가 추가되며.



============= 메인파일 ==================

//프로그레스 - 로딩메세지
-(void)mostraProgressHUD:(BOOL)done{
    hud = [[UIProgressHUD alloc] initWithWindow:self.view];
   //hud = [[UIProgressHUD alloc] initWithWindow:self.window];    //Delegate 에 추가시 해당 부분을 self.window로 변경하여 이용

 
    if(done){
        [hud setText:@"로딩완료"];
    }else{
        [hud setText:@"로딩중"];
    }
    [hud show:YES];
    if(done){
        [hud done];
    }
}

//프로그래스 로딩메세지
-(void)escondeProgressHUD{
    if (hud != nil){
        [hud hide];
        hud = nil;
    }
}

=====================================
메인파일은 mostraProgressHUD / escondeProgressHUD 두개가 추가하시고.


팝업호출은 [self mostraProgressHUD:NO]; 과 

 [self mostraProgressHUD:YES]; 로 호출하시면 됩니다.
프로그레스의 좀더 구체적이고 자동화되어있는것이 있으면 별도 포스팅을 하겠습니다.


기타 다른 함수는

[hud show];
[hud done];
[hud hide];
[hud setText:@"하이욤"];

과같이 이용하시면 됩니다.



P.S : 아시죠?? 해당 소스는 특정 저자의 소스를 인용한것이 아닙니다.
        애플개발자 레퍼런스와, 외국 개발자들의 소스를 인용한것이며.

        누구를 가르키기 위함이 아니라.
        제가 개발중 까먹는것을 대비해서 포스팅하는것입니다.

Posted by 다오나무