实现CHeckBox

发布于 2022-09-30 11:42:48 字数 3672 浏览 15 评论 0

实现CHeckBox


     在iphone开发中,需要用到自动登录,或者记住密码,这些基本设置;而UILit不提供类似的CheckBox;那么就自己实现一个吧,

实现很简单,继承一个UIButton;添加一个BOLL属性ischecked;同时增加需要响应的目标和目标函数;

view sourceprint?
  1. #import <UIKit/UIKit.h>  

  2. @interface BECheckBox : UIButton {  

  3. BOOL isChecked;  

  4. id target;  

  5. SEL fun;  

  6. }  

  7. @property (nonatomic,assign) BOOL isChecked;  

  8. -(IBAction) checkBoxClicked;  

  9. -(void)setTarget:(id)tar fun:(SEL )ff;  

  10. @end
  11.     在实现的同时,主要是初始化,设置内容模式为UIControlContentHorizontalAlignmentLeft;

  12. BECheckBox实现
  13. #import "BECheckBox.h"
  14. @implementation BECheckBox

  15. @synthesize isChecked;

  16. - (id)initWithFrame:(CGRect)frame {
  17. if (self = [super initWithFrame:frame]) {
  18. // Initialization code
  19.         self.contentHorizontalAlignment  = UIControlContentHorizontalAlignmentLeft;        
  20. [self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];
  21. [self addTarget:self action:@selector(checkBoxClicked) forControlEvents:UIControlEventTouchUpInside];
  22. }
  23. return self;
  24. }

  25. -(void)setTarget:(id)tar fun:(SEL)ff
  26. {
  27. target=tar;
  28. fun=ff;
  29. }
  30. -(void)setIsChecked:(BOOL)check
  31. {   
  32. isChecked=check;
  33. if (check) {
  34. [self setImage:[UIImage imageNamed:@"com_btn_checked.png"] forState:UIControlStateNormal];

  35. }
  36. else {
  37. [self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];
  38. }
  39. }
  40. //响应点击事件
  41. -(IBAction) checkBoxClicked
  42. {
  43. if(self.isChecked ==NO){
  44. self.isChecked =YES;
  45. [self setImage:[UIImage imageNamed:@"com_btn_checked.png"] forState:UIControlStateNormal];

  46. }else{
  47. self.isChecked =NO;
  48. [self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];

  49. }
  50. if (target) {
  51. if ([target respondsToSelector:fun) {
  52. [target performSelector:fun];
  53. }
  54. }
  55. }

  56. - (void)dealloc {
  57. target=nil;
  58. [super dealloc];
  59. }


  60. @end
复制代码在使用BECheckBox, 关键是要设置他的目标和响应消息;最终效果如下:

项目源代码:/Files/jordenwu/BECheckBox.zip

1.png (112.76 KB, 下载次数: 3)

下载附件

2011-04-12 12:30 上传

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文