093向选择器中添加UIView子类

效果如下:

ViewController.h

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

ViewController.m

 1 #import "ViewController.h"
 2
 3 @interface ViewController ()
 4 - (void)layoutUI;
 5 - (void)buttonDidPush:(UIButton *)sender;
 6 @end
 7
 8 @implementation ViewController
 9
10 - (void)viewDidLoad {
11     [super viewDidLoad];
12
13     [self layoutUI];
14 }
15
16 - (void)didReceiveMemoryWarning {
17     [super didReceiveMemoryWarning];
18     // Dispose of any resources that can be recreated.
19 }
20
21 - (void)viewWillAppear:(BOOL)animated {
22     [super viewWillAppear:animated];
23     [self.navigationController setNavigationBarHidden:NO animated:animated];
24     [self.navigationController setToolbarHidden:NO animated:animated];
25 }
26
27 - (void)layoutUI {
28     self.view.backgroundColor = [UIColor whiteColor];
29     self.navigationItem.title = @"向选择器中添加UIView子类";
30
31     //初始化动物图片数组(数据源)_arrAnimal
32     UIImage *imgDog = [UIImage imageNamed:@"Dog"];
33     UIImage *imgElephant = [UIImage imageNamed:@"Elephant"];
34     UIImage *imgLion = [UIImage imageNamed:@"Lion"];
35     UIImage *imgMonkey = [UIImage imageNamed:@"Monkey"];
36     _arrAnimal = @[imgDog, imgElephant, imgLion, imgMonkey];
37     _arrAnimal = @[_arrAnimal, _arrAnimal, _arrAnimal];
38
39     _pikVCustom = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
40     CGPoint newPoint = self.view.center;
41     _pikVCustom.center = newPoint;
42     _pikVCustom.dataSource = self;
43     _pikVCustom.delegate = self;
44     [self.view addSubview:_pikVCustom];
45
46     UIButton *btnChoice = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 150, 40)];
47     newPoint.y += 160;
48     btnChoice.center = newPoint;
49     btnChoice.layer.masksToBounds = YES;
50     btnChoice.layer.cornerRadius = 10.0;
51     btnChoice.layer.borderColor = [UIColor blackColor].CGColor;
52     btnChoice.layer.borderWidth = 2.0;
53     [btnChoice setTitle:@"选择完毕" forState:UIControlStateNormal];
54     [btnChoice setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
55     [btnChoice addTarget:self
56                   action:@selector(buttonDidPush:)
57         forControlEvents:UIControlEventTouchUpInside];
58     [self.view addSubview:btnChoice];
59 }
60
61 - (void)buttonDidPush:(UIButton *)sender {
62     NSInteger numberOfComponents = [_pikVCustom numberOfComponents];
63     NSMutableArray *mArrNew = [[NSMutableArray alloc] initWithCapacity:numberOfComponents];
64     for (NSInteger i=0; i<numberOfComponents; i++) {
65         UIImageView *imgV = (UIImageView *)[_pikVCustom viewForRow:[_pikVCustom selectedRowInComponent:i] forComponent:i];
66         UIImageView *imgVNew = [[UIImageView alloc] initWithImage:imgV.image];
67         UIBarButtonItem *barBtnNew = [[UIBarButtonItem alloc] initWithCustomView:imgVNew];
68         [mArrNew addObject:barBtnNew];
69     }
70     [self setToolbarItems:mArrNew animated:YES];
71 }
72
73 #pragma mark - PickerView
74 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
75     return [_arrAnimal count]; //返回组件列数
76 }
77
78 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
79     return [_arrAnimal[0] count]; //返回组件行数
80 }
81
82 - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
83     //如果参数view对象已经初始化,则直接显示(重用)
84     UIImageView *imgV = (UIImageView *)view;
85     if (!imgV) {
86         UIImage *img = _arrAnimal[component][row];
87         imgV = [[UIImageView alloc] initWithImage:img];
88     }
89     return imgV;
90 }
91
92 @end

AppDelegate.h

1 #import <UIKit/UIKit.h>
2
3 @interface AppDelegate : UIResponder <UIApplicationDelegate>
4 @property (strong, nonatomic) UIWindow *window;
5 @property (strong, nonatomic) UINavigationController *navigationController;
6
7 @end

AppDelegate.m

 1 #import "AppDelegate.h"
 2 #import "ViewController.h"
 3
 4 @interface AppDelegate ()
 5 @end
 6
 7 @implementation AppDelegate
 8
 9 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
10     _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
11     ViewController *viewController = [[ViewController alloc] init];
12     _navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
13     _window.rootViewController = _navigationController;
14     //[_window addSubview:_navigationController.view]; //当_window.rootViewController关联时,这一句可有可无
15     [_window makeKeyAndVisible];
16     return YES;
17 }
18
19 - (void)applicationWillResignActive:(UIApplication *)application {
20 }
21
22 - (void)applicationDidEnterBackground:(UIApplication *)application {
23 }
24
25 - (void)applicationWillEnterForeground:(UIApplication *)application {
26 }
27
28 - (void)applicationDidBecomeActive:(UIApplication *)application {
29 }
30
31 - (void)applicationWillTerminate:(UIApplication *)application {
32 }
33
34 @end
时间: 2024-10-10 07:14:00

093向选择器中添加UIView子类的相关文章

iOS开发UI篇—在ImageView中添加按钮以及Tag的参数说明

一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwithtag: 提示点:在xib中如果想要通过tag参数获取对应的控件(属性),不要把tag的参数设置为0,因为xib中所有的对象默认tag都为0,设置为0取不到对象. 二.ImageView中添加按钮 (1)ImageView和Button的比较 Button按钮的内部可以放置多张图片(4),而ImageView中只能放置一张图片. (2)说明: ImageView只

Win32中安全的子类化(翻译)

关于子类化的话题虽然有些旧,但它至今仍然不失为一种开发Windows的强有力技术,在MFC的内核.甚至.NET的内核中都离不开它,希望本连载能对Windows开发的爱好者有所帮助. 原文标题:Safe Subclassing in Win32作者:Kyle MarshMSDN技术组 点击此处查看原文 摘要 本文描述了Win32环境下的子类化,描述了它是如何工作的以及实现安全的子类化必须要遵循的规则.本文涵盖了实例子类化和全局子类化.而超类化则作为一个全局子类化的可选替代方案被介绍.从Win16到

[Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则

目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.net MVC]Asp.net MVC5系列——添加数据 概述 上篇文章中介绍了添加数据,在提交表单的数据的时候,我们需

Python之向日志输出中添加上下文信息

除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定信息,如:远程客户端的IP地址和用户名.这里我们来介绍以下几种实现方式: 通过向日志记录函数传递一个extra参数引入上下文信息 使用LoggerAdapters引入上下文信息 使用Filters引入上下文信息 一.通过向日志记录函数传递一个extra参数引入上下文信息 前面我们提到过,可以通过向日志记录函数传递一个extra参数来实现向日志输出

Asp.net MVC]Asp.net MVC5系列——在模型中添加

目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列--第一个项目 [Asp.net MVC]Asp.net MVC5系列--添加视图 [Asp.net MVC]Asp.net MVC5系列--添加模型 [Asp.net MVC]Asp.net MVC5系列--从控制器访问模型中的数据 [Asp.net MVC]Asp.net MVC5系列--添加数据 概述 上篇文章中介绍了添加数据,在提交表单的数据的时候,我们需

关于在TabBar 中添加按钮,并通过block 或代理在控制器中实现响应

相信很多朋友会遇到在TabBar中添加按钮,并要求点击按钮能够实现一些功能,但是当我们自定义的时候,怎么才能在控制器中响应?通常我会用代理或者block,block性能更好,建议使用. 自定义TabBar类 .h #import <UIKit/UIKit.h> typedef void(^myBlock) (NSArray *composeButton);//给block起别名,用数组来存放点击的Button @interface ZSTabBar : UITabBar @property (

文顶顶 iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明

ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwithtag: 提示点:在xib中如果想要通过tag参数获取对应的控件(属性),不要把tag的参数设置为0,因为xib中所有的对象默认tag都为0,设置为0取不到对象. 二.ImageView中添加按钮(1)ImageView和Button的比较 Button按钮的内部可以放置多张图片(4),而Ima

IOS开发UI基础—在UIImageView中添加按钮以及Tag的参数说明

ios开发UI基础-在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwithtag: 提示点:在xib中如果想要通过tag参数获取对应的控件(属性),不要把tag的参数设置为0,因为xib中所有的对象默认tag都为0,设置为0取不到对象. 二.ImageView中添加按钮(1)ImageView和Button的比较 Button按钮的内部可以放置多张图片(4),而Im

category中添加属性的简单方式

一.概念扩充: 1.如我们所知,使用category是用来对现有类进行功能扩展,或者将类分成多模块的一种方式.由声明和实现两部分组成.可以单独写成Objiective-C File类型文件(包含.h和.m). 2.category可以用来给现有类添加新的方法. 3.category不可以给类添加成员,会直接报错(编译不过). 4.category可以用@property来添加属性,此种方式会自动生成对应属性的set和get方法的声明,但是没有set和get方法的实现,也不会自动生成带有“_”的属