多选框的Demo
2013-01-21 17:52
288 查看
本Demo参照网络资源。
下载地址:http://download.csdn.net/detail/zgcrichard/5267065
在开发IOS项目过程中会有多选的需求,虽然IOS提供了UISwitch可以代替多选框,但是有时候还是会怀念C#、JAVA中的多选框,本Demo帮助大家实现了此功能,本Demo实现了界面展示值和实际值之间的轻松获取(例如:界面上展示:是否添加,而后台很有可能就是一个标志符0,1 or 2...)。有需要的可直接拿去,可直接放到项目中使用。本人水平有限纰漏错误在所难免,可以留言建议。
//
// UICheckBoxButton.h
// UICheckBox
//
#import <UIKit/UIKit.h>
@interface UICheckBoxButton :
UIControl{
UILabel *label;
UIImageView *icon;
BOOL checked;
id delegate;
NSArray *arr_code;
}
@property (nonatomic,retain)id delegate;
@property (nonatomic,retain)UILabel *label;
@property (nonatomic,retain)UIImageView *icon;
@property (nonatomic,retain)NSArray *arr_code;
-(BOOL)isChecked;
-(void)setChecked:(BOOL)flag;
//显示内容和实际Value
-(void)setValue:(NSString *)Value withArrCode:(NSArray *)ArrCode;
//返回实际Value
-(NSString *)getCode;
@end
//
// UICheckBoxButton.m
// UICheckBox
//
#import "UICheckBoxButton.h"
@implementation UICheckBoxButton
@synthesize label,icon,delegate,arr_code;
- (id)initWithFrame:(CGRect)frame
{
self = [super
initWithFrame:frame];
if (self) {
// Initialization code
icon = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0,
frame.size.height, frame.size.height)];
[self setChecked:NO];
[selfaddSubview:icon];
label = [[UILabelalloc]initWithFrame:CGRectMake(icon.frame.size.width+7,0,
frame.size.width-icon.frame.size.width-10, frame.size.height)];
label.backgroundColor = [UIColorclearColor];
label.textAlignment =UITextAlignmentLeft;
[selfaddSubview:label];
[selfaddTarget:selfaction:@selector(clicked)forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
-(BOOL)isChecked{
returnchecked;
}
-(void)setChecked:(BOOL)flag{
if (flag != checked) {
checked = flag;
}
if (checked) {
[icon setImage:[UIImageimageNamed:@"Check1.png"]];
}else{
[icon setImage:[UIImageimageNamed:@"UnCheck1.png"]];
}
}
//复选框选择事件
-(void)clicked{
[selfsetChecked:!checked];
if (delegate !=nil) {
SEL sel =NSSelectorFromString(@"checkButtonClicked");
if ([delegaterespondsToSelector:sel]) {
[delegate
performSelector:sel];
}
}
}
//Value是显示的Label arrCode是两个值,index0:选择;index1:不选择
-(void)setValue:(NSString *)Value withArrCode:(NSArray *)ArrCode{
NSCharacterSet *space = [NSCharacterSetwhitespaceCharacterSet];
NSString *trimmValue = [Value
stringByTrimmingCharactersInSet:space];
if (ArrCode.count !=2) {
UIAlertView *alert = [[UIAlertViewalloc]
initWithTitle:@"提示"
message:@"UICheckBox_Value"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:
nil];
[alert show];
[alert release];
return;
}
NSString *Check = [ArrCode
objectAtIndex:0];
NSString *UnCheck = [ArrCode
objectAtIndex:1];
NSString *trimmCheckCode = [Check
stringByTrimmingCharactersInSet:space];
NSString *trimmUnCheckCode = [UnCheck
stringByTrimmingCharactersInSet:space];
if ((trimmCheckCode.length ==0 || trimmUnCheckCode.length ==0) && trimmValue.length ==
0) {
return;
}else{
self.label.text = Value;
self.arr_code = ArrCode;
}
}
-(NSString *)getCode{
NSString *code = nil;
if (checked) {
code = [self.arr_codeobjectAtIndex:0];
}else{
code = [self.arr_codeobjectAtIndex:1];
}
return code;
}
-(void)dealloc{
delegate = nil;
[label release];
[icon release];
[arr_code release];
[super dealloc];
}
@end
// 使用
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
checkBoxButton = [[UICheckBoxButtonalloc]initWithFrame:CGRectMake(30,50,220,25)];
checkBoxButton.delegate =self;
NSArray *arr = [[NSArrayalloc]initWithObjects:@"check",@"uncheck",nil];
[checkBoxButton
setValue:@"test"withArrCode:arr];
[arr release];
[checkBoxButton
setChecked:YES];
[checkBoxButton
isChecked ];
[self.viewaddSubview:checkBoxButton];
[checkBoxButton
release];
}
-(void)checkButtonClicked{
NSLog(@"%@",[checkBoxButtongetCode]);
}
下载地址:http://download.csdn.net/detail/zgcrichard/5267065
在开发IOS项目过程中会有多选的需求,虽然IOS提供了UISwitch可以代替多选框,但是有时候还是会怀念C#、JAVA中的多选框,本Demo帮助大家实现了此功能,本Demo实现了界面展示值和实际值之间的轻松获取(例如:界面上展示:是否添加,而后台很有可能就是一个标志符0,1 or 2...)。有需要的可直接拿去,可直接放到项目中使用。本人水平有限纰漏错误在所难免,可以留言建议。
//
// UICheckBoxButton.h
// UICheckBox
//
#import <UIKit/UIKit.h>
@interface UICheckBoxButton :
UIControl{
UILabel *label;
UIImageView *icon;
BOOL checked;
id delegate;
NSArray *arr_code;
}
@property (nonatomic,retain)id delegate;
@property (nonatomic,retain)UILabel *label;
@property (nonatomic,retain)UIImageView *icon;
@property (nonatomic,retain)NSArray *arr_code;
-(BOOL)isChecked;
-(void)setChecked:(BOOL)flag;
//显示内容和实际Value
-(void)setValue:(NSString *)Value withArrCode:(NSArray *)ArrCode;
//返回实际Value
-(NSString *)getCode;
@end
//
// UICheckBoxButton.m
// UICheckBox
//
#import "UICheckBoxButton.h"
@implementation UICheckBoxButton
@synthesize label,icon,delegate,arr_code;
- (id)initWithFrame:(CGRect)frame
{
self = [super
initWithFrame:frame];
if (self) {
// Initialization code
icon = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0,
frame.size.height, frame.size.height)];
[self setChecked:NO];
[selfaddSubview:icon];
label = [[UILabelalloc]initWithFrame:CGRectMake(icon.frame.size.width+7,0,
frame.size.width-icon.frame.size.width-10, frame.size.height)];
label.backgroundColor = [UIColorclearColor];
label.textAlignment =UITextAlignmentLeft;
[selfaddSubview:label];
[selfaddTarget:selfaction:@selector(clicked)forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
-(BOOL)isChecked{
returnchecked;
}
-(void)setChecked:(BOOL)flag{
if (flag != checked) {
checked = flag;
}
if (checked) {
[icon setImage:[UIImageimageNamed:@"Check1.png"]];
}else{
[icon setImage:[UIImageimageNamed:@"UnCheck1.png"]];
}
}
//复选框选择事件
-(void)clicked{
[selfsetChecked:!checked];
if (delegate !=nil) {
SEL sel =NSSelectorFromString(@"checkButtonClicked");
if ([delegaterespondsToSelector:sel]) {
[delegate
performSelector:sel];
}
}
}
//Value是显示的Label arrCode是两个值,index0:选择;index1:不选择
-(void)setValue:(NSString *)Value withArrCode:(NSArray *)ArrCode{
NSCharacterSet *space = [NSCharacterSetwhitespaceCharacterSet];
NSString *trimmValue = [Value
stringByTrimmingCharactersInSet:space];
if (ArrCode.count !=2) {
UIAlertView *alert = [[UIAlertViewalloc]
initWithTitle:@"提示"
message:@"UICheckBox_Value"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:
nil];
[alert show];
[alert release];
return;
}
NSString *Check = [ArrCode
objectAtIndex:0];
NSString *UnCheck = [ArrCode
objectAtIndex:1];
NSString *trimmCheckCode = [Check
stringByTrimmingCharactersInSet:space];
NSString *trimmUnCheckCode = [UnCheck
stringByTrimmingCharactersInSet:space];
if ((trimmCheckCode.length ==0 || trimmUnCheckCode.length ==0) && trimmValue.length ==
0) {
return;
}else{
self.label.text = Value;
self.arr_code = ArrCode;
}
}
-(NSString *)getCode{
NSString *code = nil;
if (checked) {
code = [self.arr_codeobjectAtIndex:0];
}else{
code = [self.arr_codeobjectAtIndex:1];
}
return code;
}
-(void)dealloc{
delegate = nil;
[label release];
[icon release];
[arr_code release];
[super dealloc];
}
@end
// 使用
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
checkBoxButton = [[UICheckBoxButtonalloc]initWithFrame:CGRectMake(30,50,220,25)];
checkBoxButton.delegate =self;
NSArray *arr = [[NSArrayalloc]initWithObjects:@"check",@"uncheck",nil];
[checkBoxButton
setValue:@"test"withArrCode:arr];
[arr release];
[checkBoxButton
setChecked:YES];
[checkBoxButton
isChecked ];
[self.viewaddSubview:checkBoxButton];
[checkBoxButton
release];
}
-(void)checkButtonClicked{
NSLog(@"%@",[checkBoxButtongetCode]);
}
相关文章推荐
- SINA 和腾讯网易微博的OAUTH的DEMO
- 一个linux控制台程序demo
- Apache2 CGI demo
- 用Maven搭建基于CXF框架的简单WebServiceDemo
- apache 反向代理 demo
- EasyDemo*Activity及其子类体系结构图(on Github)
- 静态学习笔记StaticDemo.java
- Android UI控件详解-CheckBox(多选框)
- 各种demo——CI框架学习
- Jquery Mobile demo
- react demo5 (自定义react复合组件)
- 小程序的支付Demo和登录Demo
- <六>基于淘宝Fourinone实现分布式缓存指南和demo
- xmpp openfire smack android IM demo
- owncloud源码分析1--部分修改Demo
- 个人学习_基于Google的MVP架构demo学习
- 微信小程序-阅读小程序demo
- 【appium之三】第一个appium的Demo
- c#中委托的概念一个总结demo
- knockout_主页的demo复习