#import "FZTextField.h"
#import "Flag.h"
#import "FZFlagView.h"
@interface FZTextField()<UIPickerViewDataSource, UIPickerViewDelegate>
@property(nonatomic, strong)NSArray *flags;
@end
@implementation FZTextField
// 加载数据
- (NSArray *)flags
{
if (_flags == nil) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"flags.plist" ofType:nil];
NSArray *arrayFlags = [NSArray arrayWithContentsOfFile:path];
NSMutableArray *arrayM = [NSMutableArray array];
for (NSDictionary *dict in arrayFlags) {
Flag *flag = [Flag flagWithDict:dict];
[arrayM addObject:flag];
}
_flags = arrayM;
}
return _flags;
}
// 当从Xib中加载完描述的文本框,就会调用
- (void)awakeFromNib
{
[self setUp];
}
- (void)setUp
{
// 创建一个选择器
UIPickerView *pikerView = [[UIPickerView alloc] init];
// 设置选择器的代理和数据源
pikerView.delegate = self;
pikerView.dataSource = self;
// 设置文本框输入键盘
self.inputView = pikerView;
// 程序已启动默认选中第0列第0行
[self pickerView:pikerView didSelectRow:0 inComponent:0];
}
#pragma mark - UIPickerViewDataSource
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return self.flags.count;
}
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 80;
}
#pragma mark - UIPickerViewDelegate
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
// 取出数据
Flag *flag = self.flags[row];
// 创建FZFlagView
FZFlagView *flagView = [FZFlagView flagView];
// 设置FZFlagView的数据
flagView.flag = flag;
// 设置控件frame
CGRect frame = flagView.frame;
frame.size.width = [UIScreen mainScreen].bounds.size.width;
flagView.frame = frame;
// 返回flagView
return flagView;
}
// 用户选中某一行时调用
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
Flag *flag = self.flags[row];
self.text = flag.name;
}
@end