티스토리 뷰

모바일/iOS

모달 자식에서 부모창 Object 제어방법

VoidNoble 공허공자 2012. 1. 30. 11:17
- 부모 뷰 컨트롤러 : ParentViewController
- 자식 뷰 컨트롤러 : ChildViewController
로 정의하고 시작.
  1. 부모에 delegate @protocol 선언
  2. 자식에서 같은 @protocol 코딩
  3. 자식에서 부모에서 선언한 delegate 따른다고 선언
  4. 자식에서 해당 delegate를 통하여 부모의 object 제어

ParentViewController.h :
#import <UIKit/UIKit.h>

@protocol ParentViewDelegate
    - (void)didReceiveMesssge:(NSString *)message;
@end

@interface ParentViewController : UIViewController <parentViewDelegate>

@property (nonatomic, retain) IBOutlet UILabel *myMessage;

-(IBAction)showChildWithDelegate:(id)sender;

@end

ParentViewController.m :
#import "ParentViewController.h"
#import "ChildViewController.h"
......
// 모달 창 띄우기
-(IBAction)showChildWithDelegate:(id)sender {
    ChildViewController *childView = [[[ChildViewController alloc] init] autorelease];
    childView.delegate = self;
    [self presentModalViewController:childView animated:YES];
}

// 자식창으로부터 받은 값 셋팅
- (void)didReceiveMessage: (NSString *)message {
    myMessage.text = message;
}
......

ChildViewController.h :
#import <UIKit/UIKit.h>

@protocol ParentViewDelegate;

@interface ChildViewController : UIViewController {
    id<parentViewDelegate> delegate;
    UIButton *closeButton;
}

@property (nonatomic, assign) id<parentViewDelegate> delegate;
@property (nonatomic, retain) IBOutlet UIButton *closeButton;

- (IBAction)closeView:(id)sender;

@end

ChildViewController.m :
#import "ChildViewController.h"
#import "ParentViewController.h"

@synthesize closeButton;
@synthesize delegate;

- (IBAction)closeView:(id)sender {
    // delegate 통하여 부모에서 선언한 메쏘드에 메세지 전달
    [delegate didReceiveMessage:@"Hello World"];
    // 자신(자식창) 닫기
    [self dismissModalViewControllerAnimated:YES];
}

......

- (void)dealloc {
    [closeButton release];
    [super dealloc];
}

참고: http://timneill.net/2010/11/modal-view-controller-example-part-2/

댓글
댓글쓰기 폼
Total
830,240
Today
350
Yesterday
352
«   2020/04   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
글 보관함