본문 바로가기
프로그래밍

[iOS, OS X] IBAction과 IBOutlet

by 밝음의기둥 2013. 11. 27.
반응형

※ 본 내용은 스크랩한 내용입니다. [출처 : http://blog.goooood.net]


IBAction과 IBOutlet

IBAction과 IBOutlet은 iOS 프로그래밍에서 MVC 패턴을 구현하기 위한 개념으로 사용된다

MVC 패턴이란 데이터를 소유한 Model과 사용자에게 보여지는 View 그리고 View에서 발생되는 Event를 받아서 Model을 갱신하는 Controller를 의미하는데 View와 ViewController를 연결해주는 역할을 하는 것이 IBAction과 IBOutlet이다

IBAction은 View에서 Event가 발생되었을 때 호출되는 함수이며 IBOutlet은 Controller 함수에서 Button 등 View의 Control에 접근하기 위한 변수이다

IBAction

위에서 언급 했듯이 IBAction은 어떤 Action(Event)가 발생되었을 때 실행될 액션이다

IBAction을 구현하는 방법은 일반 함수의 구현과 다르지 않다
함수 앞에 IBAction 키워드를 사용해서 해당 함수가 특정 Action을 수행하는 것임을 알려주면 된다

1
2
3
4
5
#import <UIKit/UIKit.h>
 
@interface ViewController : UIViewController
- (IBAction)pressBtnSample:(id)sender;
@end

샘플 코드는 특정 버턴이 클릭 되었을 때 호출되는 Action을 정의한 것이다
이렇게 구현된 Action은 XCode나 Ineterface Builder에 의해 Button 등 특정 컨트롤과 연결 되면 해당 컨트롤의 이벤트 발생시점에 함수가 호출된다

IBOutlet

View에 존재하 Button을 Controller에서 접근하기 위해서 해당 객체를 클래스 멤버로 선언하고 Interface Builder등을 이용해서 연결하면 된다

1
2
3
4
5
6
7
8
#import <UIKit/UIKit.h>
 
@interface ViewController : UIViewController{
    // View에 존재하는 버튼과 연결하기위한 변수를 Contoller에 선언
    UIButton *btnSample2;
}
@property (strong, nonatomic) IBOutlet UIButton *btnSample2;
@end

위의 샘플 코드는 View의 Button과 연결하기 위한 변수를 생성하고 getter와 setter를 생성하기 위한 @propoery부분에 IBOutlet 키워드를 추가했다
이렇게 IBOutlet 키워드를 추가하면 XCode는 해당 변수가 View에 존재하는 Control과 연결하기 위한 변수임을 인지하게 된다

아래 샘플 코드는 Controller 헤더 선언된 Button을 특정 함수 호출 시 숨김 처리하는 샘플 코드다

1
2
3
4
5
6
7
@synthesize btnSample2;
     
- (IBAction)pressBtnSample:(id)sender {
    // 컨트롤러에서 View에 존해자는 버튼을 hidden 처리한다
    // hidden 처리가 되려면 btnSample2는 IB 등을 이용해서 View의 Button과 연결 되어있어야 한다
    [btnSample2 setHidden:YES];
}


반응형