pikerView入门代码

本文详细介绍了如何使用FZTextField类在iOS应用中实现自定义下拉选择框,包括数据加载、界面布局和数据绑定等关键步骤。


#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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值