實現很簡單,繼承一個UIButton;添加一個BOLL屬性ischecked;同時增加需要響應的目標和目標函數;
view sourceprint?#import
@interface BECheckBox : UIButton {
BOOL isChecked;
id target;
SEL fun;
}
@property (nonatomic,assign) BOOL isChecked;
-(IBAction) checkBoxClicked;
-(void)setTarget:(id)tar fun:(SEL )ff;
@end
在實現的同時,主要是初始化,設置內容模式爲UIControlContentHorizontalAlignmentLeft;
BECheckBox實現
#import "BECheckBox.h"
@implementation BECheckBox
@synthesize isChecked;
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Initialization code
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];
[self addTarget:self action:@selector(checkBoxClicked) forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
-(void)setTarget:(id)tar fun:(SEL)ff
{
target=tar;
fun=ff;
}
-(void)setIsChecked:(BOOL)check
{
isChecked=check;
if (check) {
[self setImage:[UIImage imageNamed:@"com_btn_checked.png"] forState:UIControlStateNormal];
}
else {
[self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];
}
}
//響應點擊事件
-(IBAction) checkBoxClicked
{
if(self.isChecked ==NO){
self.isChecked =YES;
[self setImage:[UIImage imageNamed:@"com_btn_checked.png"] forState:UIControlStateNormal];
}else{
self.isChecked =NO;
[self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];
}
if (target) {
if ([target respondsToSelector:fun) {
[target performSelector:fun];
}
}
}
- (void)dealloc {
target=nil;
[super dealloc];
}
@end
在使用BECheckBox, 關鍵是要設置他的目標和響應消息;最終效果如下:
項目源代碼:/Files/jordenwu/BECheckBox.zip
分類: iphone開發技巧UI篇