#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