国旗选择

#import "HMViewController.h"
#import "HMFlag.h"
#import "HMFlagView.h" @interface HMViewController ()<UIPickerViewDataSource,UIPickerViewDelegate> @property(nonatomic,strong)NSArray *flags; @end @implementation HMViewController -(NSArray *)flags{
if (_flags == nil) {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"flags" ofType:@"plist"];
NSArray *flagsArray = [NSArray arrayWithContentsOfFile:filePath]; NSMutableArray *flagsM = [NSMutableArray array]; for (NSDictionary *dict in flagsArray) {
HMFlag *flag = [HMFlag flagWithDict:dict];
[flagsM addObject:flag];
} _flags = flagsM; } return _flags;
} - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. NSLog(@"%@",self.flags);
} #pragma mark -pickerView的数据源 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return ;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return self.flags.count;
} //-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
// HMFlag *flag =self.flags[row];
// return flag.name;
//} #pragma mark 通常用于自定pickerView的cellView
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
#warning 在ios7当中,view的可循环引用是用bug。 HMFlag *flag =self.flags[row];
// UILabel *label = [[UILabel alloc] init];
// //自定义view的时候,设置x,y无效,所以不要做无用式
// //label.frame = CGRectMake(10, 10, 200, 44);
// label.bounds = CGRectMake(0, 0, 200, 44);
// label.backgroundColor = [UIColor grayColor];
// label.text = flag.name;
HMFlagView *flagView = nil; //如果view不为空,代表有可循环使用的view
if (view != nil) {
flagView = (HMFlagView *)view;
}else{
flagView = [HMFlagView flagView];
} //设置flagview的数据
flagView.flag = flag; NSLog(@"%d %p",row,flagView); return flagView;
} #pragma mark 设置picker里的第每一个view的高度
-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
return ;
}

*****HMFlagView.m

#import "HMFlagView.h"
#import "HMFlag.h" @interface HMFlagView()
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @implementation HMFlagView - (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
} +(instancetype)flagView{
return [[[NSBundle mainBundle] loadNibNamed:@"HMFlagView" owner:nil options:nil] lastObject];
} /*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/ -(void)setFlag:(HMFlag *)flag{
_flag = flag;
self.nameLabel.text = flag.name;
self.imageView.image = [UIImage imageNamed:flag.icon]; } @end

*****HMFlagView.h

#import <UIKit/UIKit.h>
@class HMFlag;
@interface HMFlagView : UIView +(instancetype)flagView;
@property(nonatomic,strong)HMFlag *flag; @end

***模型HMFlag.m

#import "HMFlag.h"

@implementation HMFlag

-(instancetype)initWithDict:(NSDictionary *)dict{

    if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
} return self;
}
+(instancetype)flagWithDict:(NSDictionary *)dict{
return [[self alloc] initWithDict:dict];
}
@end

***模型HMFlag.h

#import <Foundation/Foundation.h>

@interface HMFlag : NSObject

@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *icon; -(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)flagWithDict:(NSDictionary *)dict; @end

IOS第11天(2:UIPickerView自定义国旗选择)的更多相关文章

  1. IOS第11天(3:UIPickerView省市联动)

    ********* #import "ViewController.h" #import "Province.h" @interface ViewControl ...

  2. IOS第11天(1:UIPickerView点餐)

    UIPickerView #import "ViewController.h" @interface ViewController ()<UIPickerViewDataSo ...

  3. iOS开发UI篇—CAlayer(自定义layer)

    iOS开发UI篇—CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的Draw ...

  4. iOS回顾笔记(08) -- 自定义Cell的类型和创建步骤总结

    iOS回顾笔记(08) -- 自定义Cell的类型和创建步骤总结 项目中我们常见的自定义cell主要分为两种 等高cell:如应用列表.功能列表 非等高cell:如微博列表.QQ聊天页面 下面对这 ...

  5. iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局

    iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目文件结构和plist文件 二.实现效果 三.代码示例 1.没有使用配套的类,而是直接使用xib文 ...

  6. iOS回顾笔记(03) -- 自定义View的封装和xib文件的使用详解

    iOS回顾笔记(03) -- 自定义View的封装和xib文件的使用详解 iOS开发中,我们常常将一块View封装起来,以便于统一管理内部的子控件.如iOS回顾笔记(02)中的"书" ...

  7. iOS边练边学--UIPickerView和UIDatePicker的简单使用

    一.点菜系统练习(UIPickerView) <1>UIPickerView的常用代理方法介绍 #pragma mark - <UIPickerViewDelegate> // ...

  8. IOS研究院之打开照相机与本地相册选择图片(六)

    原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:IOS研究院之打开照相机与本地相册选择图片(六) Hello 大家好 IOS的文章好久都木有更新了,今天更新一篇哈. 这篇文章主要学习 ...

  9. iOS探索:对NSArray中自定义的对象进行排序

    http://mobile.51cto.com/hot-434804.htm 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天 ...

随机推荐

  1. 转载:python发送HTTP请求

    1. [代码]GET 方法 import httplib #----------------------------- conn = httplib.HTTPConnection("www. ...

  2. HIT2715 Matrix3(最小费用最大流)

    题目大概说有一个n×n的矩阵,每个格子都有权值和高度,在这个矩阵中进行最多k次旅行,每次旅行能从当前格子走到相邻且高度更小的格子,走到格子边界就能出去完成这次旅行.每走到一个格子就累加格子的权值然后把 ...

  3. EF框架step by step(6)—处理实体complex属性

    上一篇的中介绍过了对于EF4.1框架中,实体的简单属性的处理 这一篇介绍一下Code First方法中,实体Complex属性的处理.Complex属性是将一个对象做为另一个对象的属性.映射到数据库中 ...

  4. python 代码片段17

    #coding=utf-8 try: get_mutex() do_some_stuff() except (IndexError,KeyError,AttributeError),e: log(&q ...

  5. BZOJ2002 & LCT模板(分块不会搞)

    题意: 看题. 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿 着一条直线摆上n个装置,每个装置设定初 ...

  6. No configuration found for the specified action解决办法

    http://blog.csdn.net/carefree31441/article/details/4857546 使用Struts2,配置一切正常,使用常用tag也正常,但是在使用<s:fo ...

  7. ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]的用法

    父类:public class BaseHibernateDaoSupport<T>{ private Class<T> entityClass; public BaseHib ...

  8. HDU-统计难题

    DescriptionIgnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Inp ...

  9. Android -- 闹钟服务的使用(启动与停止)

    1. 效果图

  10. Android --RatingBar的使用

    1.效果图