ios開發(fā)自定義checkbox控件

字號:


    ios本身沒有系統(tǒng)的checkbox組件,但是實際開發(fā)中會經(jīng)常用到,所以專門寫了一個checkbox控件,直接上代碼
    效果圖:
    名單
    uicheckboxbutton.h文件如下:
    #import
    #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文件如下:
    #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
    使用方法:
    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];