본문 바로가기

프로그래밍/아이폰 프로그래밍

11. 피커 사용하기 (UIPickerView)

헤더파일.

#import <UIKit/UIKit.h>

// 피커를 사용하기 위해서는 아래와 같은 2개의 프로토콜을 반드시 사용해야 한다.

@interface InstaTwitViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {

NSArray* activities; // 피커에 넣어줄 데이터 소스를 담아줄 배열

NSArray* feelings;

        IBOutlet UIPickerView *tweetPicker;

}


@end





.m파일.


// 뷰를 로드한 후 배열을 초기화 한다. 피커에 넣어줄 데이터 소스이다.

- (void)viewDidLoad {

    [super viewDidLoad];

activities = [[NSArray alloc] initWithObjects:@"sleeping",@"eating",@"working",nil];

feelings = [[NSArray alloc] initWithObjects:@"awesome",@"sad",@"happy",nil];

}


// 필수 사용메소드 2개 : 이 작업을 하면 피커에 데이터가 들어간다.

// 피커를 사용하기 위해 반드시 사용되어야 할 필수 메소드이다.

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

return 2;

}


// 피커를 사용하기 위해 반드시 사용되어야 할 필수 메소드이다.

- (NSInteger)pickerView:(UIPickerView *) pickerView numberOfRowsInComponent : (NSInteger)component{

if (component == 0) {

return [activities count]; // 0번째 컴퍼넌트의 들어갈 데이터 소스의 수를 반환한다.

}

else {

return [feelings count];

}

}


// 피커를 사용하기 위해 반드시 사용되어야 할 필수 델리게이트이다.

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow: (NSInteger)row forComponent: (NSInteger)component{

switch (component) {

case 0:

return [activities objectAtIndex:row]; //0번째 컴퍼넌트의 선택된 문자열을 반환한다.

case 1:

return [feelings objectAtIndex:row]; //1번째 컴퍼넌트의 선택된 문자열을 반환한다.

}

return nil;

}




이후, IB에서 연결을 하면 된다.




피커의 선택된 값을 가져오는 법.


NSString* str = [activities objectAtIndex:[tweetPicker selectedRowInComponent:0]];

NSString* str2 = [feelings objectAtIndex:[tweetPicker selectedRowInComponent:1]];