实现 CheckButton:超简易教程

一、定制可重用的 IB 组件 CheckButton

1、新建 Single View Application,勾选“Use Automatic Referencing Counting”和“UseStoryBoards”。

2、新建一个xib,名为 CheckButton.xib 。创建一个 UIControl 子类 CheckButton,作为 xib 的 File'sowner 的 class。

3、在IB 中将 view 的“Use Autolayout”反选。Size 设置为 Freedom。

4、拖入一个 UIButton,设置 Default 图片和 Selected 图片分别为 checkbox2.png 和 checkbox.png。

5、将 View 和 Button 分别连接至出口 view 和 button。

6、CheckButton 类实现如下:

// CheckButton.h 文件

#import <UIKit/UIKit.h>

 

@interface CheckButton : UIControl{

   

}

@property(strong,nonatomic)IBOutletUIButton *button;

@property(strong,nonatomic)NSString* title;

@property (strong, nonatomic) IBOutletUIView *view;

@end

// CheckButton.m 文件

#import "CheckButton.h"

 

@implementation CheckButton

@synthesize button=button;

-(void)setupView{

   

    [[NSBundlemainBundle] loadNibNamed:@"CheckButton"owner:selfoptions:nil];

    [buttonsetFrame:self.bounds];

    [buttonaddTarget:selfaction:@selector(doSelect:) forControlEvents:UIControlEventTouchUpInside];

    [selfaddSubview:self.view]; //where self.view is IBOutlet connectedwith the actual Xib view I

}

 

-(id)initWithFrame:(CGRect)frame{

    if((self = [superinitWithFrame:frame])){

        [selfsetupView];

    }

   

    returnself;

}

 

-(id)initWithCoder:(NSCoder *)aDecoder{

    if((self = [superinitWithCoder:aDecoder])){

        [selfsetupView];

    }

    

    returnself;

}

 

- (void) awakeFromNib

{

    [superawakeFromNib];

 

    [selfaddSubview:self.view];

}

- (void)layoutSubviews{

    button.frame=self.bounds;

}

-(BOOL)isSelected{

    returnbutton.selected;

}

-(void)setSelected:(BOOL)selected{

    [buttonsetSelected:selected];

}

-(NSString*)title{

    returnbutton.titleLabel.text;

}

-(void)setTitle:(NSString *)title{

    // reserve sufficient space for icon.

    [buttonsetTitle:[@"  "stringByAppendingString:title] forState:UIControlStateNormal];

}

-(void)doSelect:(UIButton*)sender{

    [selfsetSelected:!sender.selected];

    [selfsendActionsForControlEvents:UIControlEventTouchUpInside];

}

@end

二、在 ViewController 中使用自定义组件

7、打开故事板,拖一个 UIView 到 view 中,将 class 改为 CheckButton。

8、将 CheckButton 连接至出口 checkbox。

9、在连接面板,将 CheckButton 的 Touch Up Inside 连接到 IBAction :

- (IBAction)saveSecurity:(id)sender {

    NSLog(@"save security button isselected:%d",_checkbox.selected);

}

10、在 ViewController 的 viewDidLoad 方法中修改 checkbox 的标题文本:

_checkbox.title=@"记住密码";

11、OK,运行程序,大功告成。源代码在资源中下载。

你可能感兴趣的:(实现 CheckButton:超简易教程)