#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]];