UIWebView를 사용할때면(다른 클래스들의 경우도 그렇겠지만), delegate를 설정할때가 많습니다.  저의 경우에는 delegate를 설정해놓고, UIWebViewDelegate에 정의되어 있는 webView:shouldStartLoadWithRequest:navigationType: 을 많이 사용합니다. 그냥 사용하는 정도의 수준이었는데, 비동기동작을 목적으로 delegate protocol을 정의하고 직접 구현해서 써보니 쉽고 편리했습니다.

우선 UIButton 하나를 추가해서 Touch Up Inside Event와 연결했습니다.

그리고 delegate라고 일을 할 class를 하나 선언했습니다.

@protocol MyButtonHandlerDelegate;
@interface MyButtonHandler : NSObject {
    id <MyButtonHandlerDelegate> delegate;
}
@property (nonatomic, assign) id <MyButtonHandlerDelegate> delegate;
- (void)beginHandle;
@end

@protocol MyButtonHandlerDelegate
- (void)DidButtonPressedEvendHandled;
@end

구현은 그냥 로그만 남기도록 했습니다.

#import "MyButtonHandler.h"
@implementation MyButtonHandler
@synthesize delegate;
- (void)beginHandle {
    NSLog(@"MyButtonHandler::beginHandle called");
    [delegate DidButtonPressedEvendHandled];
}
@end

이제 버튼이 눌려지고나서부터 한번 살펴볼까요? 우선 Touch Up Inside 이벤트와 연결해놓은 메소드가 호출됩니다.

- (void)ButtonPressed:(id)sender {
    NSLog(@"magazinereaderViewController::ButtonPressed called");
    [buttonHandler beginHandle];
}

그리고 MyButtonHandler의 beginHandle 메소드가 호출되구요,
그다음엔 다시 DidButtonPressedEvendHandled가 호출되네요.

- (void)DidButtonPressedEvendHandled {
    NSLog(@"magazinereaderViewController::DidButtonPressedEvendHandled called");
}

이렇게 해서 우선 delegate라는 이름으로 protocol을 한번 구현하고 사용해봤습니다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: