IOS開發 – 自定義CheckBox控件 – iPhone手機開發技術文章 iPhone軟體開發教學課程

IOS本身沒有系統的CheckBox組件,但是實際開發中會經常用到,所以專門寫瞭一個CheckBox控件,直接上代碼

效果圖:

 

UICheckBoxButton.h文件如下:
[html]
#import <UIKit/UIKit.h> 
#import "Common.h" 
 
@interface UICheckBoxButton : UIControl 
{         
    UILabel *label;   
    UIImageView *icon;   
    BOOL checked;   
    id delegate;    
}     
@property (retain, nonatomic) id delegate;   
@property (retain, nonatomic) UILabel *label;   
@property (retain, nonatomic) UIImageView *icon;   
 
-(BOOL)isChecked;   
-(void)setChecked: (BOOL)flag;  
@end 

UICheckBoxButton.m文件如下:
[html] 
#import "UICheckBoxButton.h" 
 
@implementation UICheckBoxButton 
@synthesize label,icon,delegate;   
 
– (id)initWithFrame:(CGRect)frame { 
    if ( self = [super initWithFrame: frame])    
    {           
        icon =[[UIImageView alloc] initWithFrame: CGRectMake (0, 0, frame.size.height, frame.size.height)];           
        [self setChecked:NO]; 
        [self addSubview: icon];         
        label =[[UILabel alloc] initWithFrame: CGRectMake(icon.frame.size.width + 7, 0,   
                                                          frame.size.width – icon.frame.size.width – 10,   
                                                          frame.size.height)];   
        label.backgroundColor =[UIColor clearColor];           
        label.textAlignment = UITextAlignmentLeft;   
        [self addSubview:label];   
        [self addTarget:self action:@selector(clicked) forControlEvents: UIControlEventTouchUpInside];   
    }       
    return self;   

 
-(BOOL)isChecked {   
    return checked;   
}   
-(void)setChecked: (BOOL)flag {   
    if (flag != checked)   
    {    
        checked = flag;   
    }       
    if (checked)    
    {   
        [icon setImage: [UIImage imageNamed:@"checkBoxSelect.png"]];    
    }    
    else   
    {   
        [icon setImage: [UIImage imageNamed:@"checkBoxNoSelect.png"]];   
    }   
}   
-(void)clicked {   
    [self setChecked: !checked];       
    if (delegate != nil)    
    {   
        SEL sel = NSSelectorFromString (@"checkButtonClicked");          
        if ([delegate respondsToSelector: sel])   
        {   
            [delegate performSelector: sel];   
        } 
    }   
     
}   
-(void)dealloc {   
    delegate = nil;   
    [label release];   
    [icon release];   
    [super dealloc];   
}   
@end 

使用方法:
[html]  www.aiwalls.com
UICheckBoxButton *checkBoxButton = [[ UICheckBoxButton alloc] initWithFrame: CGRectMake(30, 50, 220, 25)]; 
        checkBoxButton.delegate = self.delegate; 
        checkBoxButton.label.text = [Common getTextByTag:@"noCostPrompt"];  
        checkBoxButton.label.textColor = [Common getColorByTag:@"alertLabelcolor"]; 
        [self.view addSubview:checkBoxButton]; 
        [checkBoxButton release]; 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。