您的位置:首页 > 产品设计 > UI/UE

多选框的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]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息