089使用选择器视图

效果如下:

ViewController.h

1 #import <UIKit/UIKit.h>
2
3 @interface ViewController : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate>
4 @property (strong, nonatomic) UIPickerView *pikVCustom;
5 @property (strong, nonatomic) NSDictionary *dicSongInfo;
6 @property (strong, nonatomic) NSArray *arrSinger;
7 @property (strong, nonatomic) NSArray *arrSong;
8
9 @end

ViewController.m

  1 #import "ViewController.h"
  2
  3 @interface ViewController ()
  4 - (void)layoutUI;
  5 - (void)buttonDidPush:(UIButton *)sender;
  6 - (void)loadData;
  7 @end
  8
  9 @implementation ViewController
 10 #define singerComponentIndex 0
 11 #define songComponentIndex 1
 12
 13 - (void)viewDidLoad {
 14     [super viewDidLoad];
 15
 16     [self layoutUI];
 17 }
 18
 19 - (void)didReceiveMemoryWarning {
 20     [super didReceiveMemoryWarning];
 21     // Dispose of any resources that can be recreated.
 22 }
 23
 24 - (void)layoutUI {
 25     _pikVCustom = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
 26     CGPoint newPoint = self.view.center;
 27     _pikVCustom.center = newPoint;
 28     _pikVCustom.dataSource = self;
 29     _pikVCustom.delegate = self;
 30     [self.view addSubview:_pikVCustom];
 31
 32     UIButton *btnChoice = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 150, 40)];
 33     newPoint.y += 160;
 34     btnChoice.center = newPoint;
 35     btnChoice.layer.masksToBounds = YES;
 36     btnChoice.layer.cornerRadius = 10.0;
 37     btnChoice.layer.borderColor = [UIColor blackColor].CGColor;
 38     btnChoice.layer.borderWidth = 2.0;
 39     [btnChoice setTitle:@"选择完毕" forState:UIControlStateNormal];
 40     [btnChoice setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
 41     [btnChoice addTarget:self
 42                   action:@selector(buttonDidPush:)
 43         forControlEvents:UIControlEventTouchUpInside];
 44     [self.view addSubview:btnChoice];
 45
 46     [self loadData];
 47 }
 48
 49 - (void)loadData {
 50     //读取SongInfo.plist文件内容
 51     NSBundle *bundle = [NSBundle mainBundle];
 52     NSURL *urlSongInfo = [bundle URLForResource:@"SongInfo" withExtension:@"plist"];
 53     _dicSongInfo = [NSDictionary dictionaryWithContentsOfURL:urlSongInfo];
 54     _arrSinger = [_dicSongInfo allKeys];
 55     _arrSinger = [_arrSinger sortedArrayUsingSelector:@selector(compare:)];
 56     _arrSong = [_dicSongInfo objectForKey:_arrSinger[0]];
 57 }
 58
 59 - (void)buttonDidPush:(UIButton *)sender {
 60     NSInteger selectedRowOfSinger = [_pikVCustom selectedRowInComponent:singerComponentIndex];
 61     NSInteger selectedRowOfSong = [_pikVCustom selectedRowInComponent:songComponentIndex];
 62     NSString *strMessage =
 63     [[NSString alloc] initWithFormat:@"您选择了%@的《%@》",
 64      _arrSinger[selectedRowOfSinger],
 65      _arrSong[selectedRowOfSong]];
 66     UIAlertView *alertV = [[UIAlertView alloc] initWithTitle:@"选择的歌曲信息"
 67                                                      message:strMessage
 68                                                     delegate:nil
 69                                            cancelButtonTitle:nil
 70                                            otherButtonTitles:@"确定", nil];
 71     [alertV show];
 72 }
 73
 74 #pragma mark - PickerView
 75 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
 76     return 2; //返回组件列数
 77 }
 78
 79 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
 80     NSInteger rowCount = 0;
 81     switch (component) {
 82         case singerComponentIndex:
 83             rowCount = [_arrSinger count];
 84             break;
 85         case songComponentIndex:
 86             rowCount = [_arrSong count];
 87             break;
 88     }
 89     return rowCount; //返回组件行数
 90 }
 91
 92 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
 93     NSString *strTitle = @"";
 94     switch (component) {
 95         case singerComponentIndex:
 96             strTitle = _arrSinger[row];
 97             break;
 98         case songComponentIndex:
 99             strTitle = _arrSong[row];
100             break;
101     }
102     return strTitle;
103 }
104
105 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
106     //如果选取的是第一个选取器时
107     if (component == singerComponentIndex) {
108         _arrSong = [_dicSongInfo objectForKey:_arrSinger[row]];
109
110         //重新装载第二个选取器内容
111         [_pikVCustom reloadComponent:songComponentIndex];
112         [_pikVCustom selectRow:0 inComponent:songComponentIndex animated:YES];
113     }
114 }
115
116 - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
117     CGFloat width = 0;
118     switch (component) {
119         case singerComponentIndex:
120             width = 120.0;
121             break;
122         case songComponentIndex:
123             width = 200.0;
124             break;
125     }
126     return width;
127 }
128
129 @end

SongInfo.plist

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 3 <plist version="1.0">
 4 <dict>
 5     <key>许嵩</key>
 6     <array>
 7         <string>断桥残雪</string>
 8         <string>玫瑰花的葬礼</string>
 9         <string>城府</string>
10         <string>清明雨上</string>
11     </array>
12     <key>周杰伦</key>
13     <array>
14         <string>听妈妈的话</string>
15         <string>双节棍</string>
16         <string>菊花台</string>
17         <string>青花瓷</string>
18         <string>千里之外</string>
19         <string>蜗牛</string>
20         <string>夜曲</string>
21     </array>
22     <key>梁静茹</key>
23     <array>
24         <string>可惜不是你</string>
25         <string>勇气</string>
26         <string>问</string>
27         <string>没有如果</string>
28     </array>
29     <key>阿杜</key>
30     <array>
31         <string>离别</string>
32         <string>差一点</string>
33     </array>
34     <key>林俊杰</key>
35     <array>
36         <string>江南</string>
37         <string>曹操</string>
38         <string>一千年以后</string>
39     </array>
40     <key>张靓颖</key>
41     <array>
42         <string>画心</string>
43         <string>好不容易</string>
44     </array>
45     <key>方大同</key>
46     <array>
47         <string>黑白</string>
48         <string>三人游</string>
49         <string>love song</string>
50     </array>
51     <key>凤凰传奇</key>
52     <array>
53         <string>最炫名族风</string>
54         <string>荷塘月色</string>
55     </array>
56     <key>邱永传</key>
57     <array>
58         <string>十一年</string>
59     </array>
60     <key>胡夏</key>
61     <array>
62         <string>伤心童话</string>
63     </array>
64 </dict>
65 </plist>
时间: 2024-11-08 22:16:03

089使用选择器视图的相关文章

iOS选择器视图控件(UIPickerView)使用方法总结

iOS中UIPickerView使用总结 UIPickerView是iOS中的原生选择器控件,使用方便,用法简单,效果漂亮. @property(nonatomic,assign) id<UIPickerViewDataSource> dataSource; @property(nonatomic,assign) id<UIPickerViewDelegate>   delegate; 设置数据源和代理 @property(nonatomic) BOOL showsSelectio

选择器(UIPickerView)

Apple提供了两种形式的选择器:日期选择器(UIDatePicker)与自定义选择器(UIPickerView). 当用户使用日期选择器选定一个时间后,调用datePickerID.date可以直接获得一个NSDate对象,从而可以进行一系列的时间与日期处理. 自定义选择器的使用稍微麻烦点,当你直接从控件栏里拖放Picker View到故事板然后运行,会发现调试器界面空无一物.这是因为UIPickerView必须用代码实现一些协议才能正常显示.而且无法在Attributes Inspector

ios入门笔记(使用日期选择器)

1.创建项目 创建初始场景,和日期选择场景(可以将其背景色设置为Scroll View Texted Background Color),选择一个日期选择器至该视图 2.创建切换 按住CONTROL从初始视图拉向日期设置视图,(注意与前一章的区别,这里因为是两个控制器相连,所以要手工触发切换因此将该切换命名以便代码实现) 3.实现逻辑 1.在实现中除了让两个控制器知道彼此的方法属性外,还要提供一个属性(让日期选择器能够访问初始控制器,他将通过该属性访问初始控制器,因为在IPAD中要禁止用户同时显

Swift调用Objective-C编写的代码(颜色选择器KKColorListPicker调用)

在Swift项目中,我们可以导入任意用Objective-C写的框架,代码库等.下面以Swift调用Objective-C编写的颜色选择器KKColorListPicker为例. 效果图如下:      实现步骤: 1,首先在项目里导入KKColorListPicker的源码(整个文件夹,在项目上有键“Add Files To XXX”). 2,手工创建桥接头文件bridge.h来包含需要引用的Objective-C头文件,内容如下: 1 2 3 //KKColorsSchemeType.h已经

安卓开源项目周报0315

由OpenDigg 出品的安卓开源项目周报第十二期来啦.我们的安卓开源周报集合了OpenDigg一周来新收录的优质的安卓开源项目,方便安卓开发人员便捷的找到自己需要的项目工具.atlas 强大的Android组件框架 DiscreteScrollView 基于RecyclerView的滚动列表实现 Depth 在fragments中添加Depth SmileyRating Android简单的评级栏 CookieBar 屏幕的底部或者顶部显示短信息 QueryHighlighter 在文本中突出

Picker View控件:

Picker View控件: 中文:单滚轮选择器 自定义选择器需要遵守两个协议:数据源协议和委托协议 UIPickerView有一个实例方法selectRow:(NSInteger)inComponent:(NSInteger)animated:(BOOL),以编程的方式来选择值. UIPickerView必须用代码实现一些协议才能正常显示,而且无法在Attributes Inspector(属性检查)中配置选择器视图的外观 1. 数据源协议 数据源协议(UIPickerViewDataSour

《iOS 7 应用开发实战详解》

<iOS 7 应用开发实战详解> 基本信息 作者: 朱元波    管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5月 开本:16开 页码:382 版次:1-1 所属分类:计算机 > 软件与程序设计 > 移动开发 > iPhone 更多关于>>><iOS 7 应用开发实战详解> 编辑推荐 新版本 全面讲解了iOS 7开发的各种技术 热门技术 基本控件.数据存储.多场景处理.界

最新最全的 Android 开源项目合集

原文链接:https://github.com/opendigg/awesome-github-android-ui 在 Github 上做了一个很新的 Android 开发相关开源项目汇总,涉及到 Android 开发的方方面面,基本很全了.对 Android 开发感兴趣的欢迎 Star ,后续也会定期维护更新这个列表.当然,你也可以去 opendigg 上查看. -- 由欧戈分享 awesome-github-android-ui 是由OpenDigg整理并维护的安卓UI相关开源项目库集合.

Android UI相关开源项目库汇总

最近做了一个Android UI相关开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. 抽屉菜单 MaterialDrawer ★7337 - 安卓抽屉效果实现方案 Side-Menu.Android ★3865 - 创意边侧菜单 FlowingDrawer ★1744 - 向右滑动流动抽屉效果 SlidingRootNav ★1338 - 仿DrawerLayout的View