2016 - 1 - 3 国旗选择demo
//
// 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 ()<UIPickerViewDataSource,UIPickerViewDelegate>
@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 ;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return ;
}
#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(, , , );
flagView.flag = self.flags[row];
return flagView;
} // @end
以上为ViewController中的代码
FlagView中的代码:
#import <UIKit/UIKit.h>
#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 <Foundation/Foundation.h> @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
效果如下

2016 - 1 - 3 国旗选择demo的更多相关文章
- IOS第11天(2:UIPickerView自定义国旗选择)
国旗选择 #import "HMViewController.h" #import "HMFlag.h" #import "HMFlagView.h& ...
- 仿QQ发语音、图片选择、表情选择demo
一款仿QQ发语音.图片选择.调用拍照.表情选择的demo git地址:https://github.com/PureLovePeter/pic.git. 喜欢的请 star star star,共 ...
- 酒店移动端入住离店日期选择demo(转)
原作者:http://blog.csdn.net/cj14227/article/details/65629737 效果图: demo 代码: <!DOCTYPE html> <ht ...
- [iOS基础控件 - 6.10.2] PickerView 自定义row内容 国家选择Demo
A.需求 1.自定义一个UIView和xib,包含国家名和国旗显示 2.学习row的重用 B.实现步骤 1.准备plist文件和国旗图片 2.创建模型 // // Flag.h // Co ...
- ios 中pickerView用法之国旗选择
QRViewController控制器 // // QRViewController.m // #import "QRViewController.h" #import " ...
- Ajax地域选择demo
index.jsp只用于转发到Servlet获得省份数据再转发到province.jsp index.jsp <%@ page language="java" content ...
- 2016 -1 - 3 省市联动demo
#import "ViewController.h" #import "CZProvinces.h" @interface ViewController ()& ...
- [译文]选择使用正确的 Markdown Parser
以下客座文章由Ray Villalobos提供.在这篇文章中Ray将要去探索很多种不同的Markdown语法.所有的这些MarkDown变种均提供了不同的特性,都超越传统的Markdown语法,却又相 ...
- 商品sku规格选择效果,没有商品的不能选中,选择顺序不影响展示结果
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
随机推荐
- 三张图彻底了解Java中字符串的不变性
转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...
- selenium+python笔记4
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 使用unittest组织用例 ""& ...
- 谈谈JPA-04-JPA的常用API
JPA相关接口/类: Persistence Persistence 类是用于获取 EntityManagerFactory 实例.该类包含一个名为 createEntityManagerFacto ...
- Eclipse Maven Web Application 设置配置文件
默认的项目添加会有问题,各种版本和编译版本错误造成. 1.更改Maven编译版本 2.更改项目Facets针对的版本 3.更改Settings
- Linux配置邮箱发送(MUTT/MSMTPQ)
配置邮箱发送 http://www.ilanni.com/?p=10589
- hdu 2818 Building Block
Building Block Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 51nod 1050 循环数组最大子段和
题目链接:51nod 1050 循环数组最大子段和 #include<stdio.h> #include<algorithm> using namespace std; ; l ...
- MySql与SqlServer的一些常用用法的差别
MySql与SqlServer的一些常用用法的差别 本文为转载 本文将主要列出MySql与SqlServer不同的地方,且以常用的存储过程的相关内容为主. 1. 标识符限定符 SqlServer [] ...
- query attr prop区别
大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked", ...
- 5月23日 JavaScript
一.JavaScript简介 1.JavaScript是什么: 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它的用法: 在HTML中位置有三块: (1)head里面 (2)bod ...