//// ViewController.m// 国旗//// Created by Mac on 16/1/3.// Copyright © 2016年 Mac. All rights reserved.//#import "ViewController.h"#import "FlagView.h"#import "CZFlag.h"@interface ViewController ()@property (nonatomic, strong)NSArray *flags;@end@implementation ViewController- (NSArray *)flags{ if (!_flags) { NSArray *array = [CZFlag flagList]; _flags = array; } return _flags;}- (void)viewDidLoad { [super viewDidLoad];// NSLog(@"%@",self.flags);}#pragma mark - 数据源方法- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return 1;}- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ return 10;}#pragma mark - 代理方法//设置 控件的内容方法- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ FlagView *flagView =(FlagView *)view; if (!flagView) { flagView = [FlagView flagView]; } #warning 一般设置自定义的view的大小的时候 不直接使用frame与bounds. flagView.bounds = CGRectMake(0, 0, 375, 50); flagView.flag = self.flags[row]; return flagView;}//@end
以上为ViewController中的代码
FlagView中的代码:
#import#import "CZFlag.h"@interface FlagView : UIView@property (weak, nonatomic) IBOutlet UIImageView *iconView;@property (weak, nonatomic) IBOutlet UILabel *nameView;@property (nonatomic, strong) CZFlag *flag;+ (instancetype )flagView;@end//.m中#import "FlagView.h"@implementation FlagView+ (instancetype )flagView{ return [[[NSBundle mainBundle] loadNibNamed:@"FlagView" owner:nil options:nil] lastObject];}- (void)setFlag:(CZFlag *)flag{ self.nameView.text = flag.name; self.iconView.image = [UIImage imageNamed:flag.icon];}@end
CZFlag中
#import@interface CZFlag : NSObject@property (nonatomic, copy)NSString *name;@property (nonatomic, copy)NSString *icon;+ (NSArray *)flagList;- (instancetype)initWithDic:(NSDictionary *)dic;+ (instancetype)flagWithDic:(NSDictionary *)dic;@end//.m中#import "CZFlag.h"@implementation CZFlag- (instancetype)initWithDic:(NSDictionary *)dic{ if (self = [super init]) { [self setValuesForKeysWithDictionary:dic]; } return self;}+ (instancetype)flagWithDic:(NSDictionary *)dic{ CZFlag *flag = [[CZFlag alloc] initWithDic:dic]; return flag;}+ (NSArray *)flagList{ NSString *path = [[NSBundle mainBundle] pathForResource:@"flags" ofType:@"plist"]; NSMutableArray *tmpArray = [NSMutableArray array]; NSArray *dicArray = [NSArray arrayWithContentsOfFile:path]; for (NSDictionary *dic in dicArray) { CZFlag *flag = [CZFlag flagWithDic:dic]; [tmpArray addObject:flag]; } return tmpArray;}@end
效果如下