‘Uncategorized’ 카테고리의 보관물

HTML5, CSS, Javascript useful links

Advertisements

아이패드 매거진 리더 – Delegate

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을 한번 구현하고 사용해봤습니다.