自定义控件-PickerView

来源:互联网 发布:linux yum命令有什么用 编辑:程序博客网 时间:2024/05/01 08:59
#import "ViewController.h"#import "QHFlag.h"#import "QHFlagView.h"@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>@property (nonatomic, strong) NSArray *flags;@end@implementation ViewController- (NSArray *)flags{    if (!_flags) {        NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"flags.plist" ofType:nil]];        NSMutableArray *flagArray = [NSMutableArray array];        for (NSDictionary *dict in dictArray) {            QHFlag *flag = [QHFlag flagWithDict:dict];            [flagArray addObject:flag];        }        _flags = flagArray;    }    return _flags;}- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.}- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{    return 1;}- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{    return self.flags.count;}- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{    //1.创建flagView    QHFlagView *flagView = [QHFlagView flagViewWithResuingView:view];        flagView.flag = self.flags[row];    return flagView;    }- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{    return [QHFlagView flagViewHeight];}

数据模型

#import <Foundation/Foundation.h>@interface QHFlag : NSObject@property (nonatomic, copy) NSString *name;@property (nonatomic, copy) NSString *icon;+ (instancetype)flagWithDict:(NSDictionary *)dict;- (instancetype)initWithDict:(NSDictionary *)dict;@end

#import "QHFlag.h"@implementation QHFlag+ (instancetype)flagWithDict:(NSDictionary *)dict{    return [[self alloc]initWithDict:dict];}- (instancetype)initWithDict:(NSDictionary *)dict{    if (self = [super init]) {        [self setValuesForKeysWithDictionary:dict];    }    return self;}@end

#import <UIKit/UIKit.h>@class QHFlag;@interface QHFlagView : UIView@property (nonatomic, strong) QHFlag *flag;+ (instancetype)flagViewWithResuingView:(UIView *)resuingView;+ (CGFloat)flagViewHeight;@end
#import "MJFlagView.h"#import "QHFlag.h"@interface MJFlagView()@property (weak, nonatomic) IBOutlet UILabel *nameLabel;@property (weak, nonatomic) IBOutlet UIImageView *iconView;@end@implementation QHFlagView+ (instancetype)flagViewWithResuingView:(UIView *)resuingView{    if (resuingView == nil) {        return [[[NSBundle mainBundle] loadNibNamed:@"MJFlagView" owner:nil options:nil] lastObject];    } else {        return (QHFlagView *)resuingView;    }}- (void)setFlag:(QHFlag *)flag{    _flag = flag;        // 1.名称    self.nameLabel.text = flag.name;        // 2.图标    self.iconView.image = [UIImage imageNamed:flag.icon];}+ (CGFloat)flagViewHeight{    return 44;}@end



0 0
原创粉丝点击