多选框的Demo

来源:互联网 发布:公司网站域名申请 编辑:程序博客网 时间:2024/06/03 16:10

本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]);

}


原创粉丝点击