Ios中checkBox

//使用tableview来进行布局checkBox.便于全选,全不选
//radiobutton 适合用RadioButton

#import <UIKit/UIKit.h> @interface CheckView : UIView<UITableViewDataSource,UITableViewDelegate> - (id)initWithFrame:(CGRect)frame Data:(NSArray *)data; -(void)CkNotAllSelect; -(void)CkAllSelect; @end #import "CheckView.h" #import "CommonButton.h" #define Kcount 3 @interface CheckView (){ UITableView *_tableview; } @property(nonatomic,retain)NSArray *MyData; @property(nonatomic,retain)NSMutableArray *chooseArrary; @end @implementation CheckView - (id)initWithFrame:(CGRect)frame Data:(NSArray *)data { self = [super initWithFrame:frame]; if (self) { self.MyData=data; _tableview=[UITableView TableViewWithFrame:self.bounds style:UITableViewStylePlain backgroundColor:[UIColor clearColor] delegate:self separatorStyle:UITableViewCellSeparatorStyleSingleLine]; _tableview.rowHeight=60; [self addSubview:_tableview]; self.chooseArrary =[NSMutableArray arrayWithCapacity:0]; for (int i=0; i<data.count; i++) { [self.chooseArrary addObject:[NSNumber numberWithBool:NO]]; } } return self; } -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return self.MyData.count%Kcount==0?self.MyData.count/Kcount:self.MyData.count/Kcount+1; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *cellIndentify=@"CheckView"; UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIndentify]; if (cell==nil) { cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIndentify] autorelease]; } int row=indexPath.row*Kcount; int width=tableView.bounds.size.width/Kcount; CGRect leftRect,rect=CGRectMake(0, 0, tableView.bounds.size.width, tableView.rowHeight); for(int i=row;i<row+Kcount;i++){ if(i>=self.MyData.count) break; else{ CGRectDivide(rect, &leftRect, &rect, width, CGRectMinXEdge); CommonButton *btn=[[CommonButton alloc] initWithFrame:leftRect]; [btn setTitle:self.MyData[i] forState:UIControlStateNormal]; BOOL flag=[[self.chooseArrary objectAtIndex:i] boolValue]; if (flag) { [btn setImage:[UIImage imageNamed:@"radio_selected"] forState:UIControlStateNormal]; } else{ [btn setImage:[UIImage imageNamed:@"radio_normal"] forState:UIControlStateNormal]; } [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside]; btn.tag=i; [cell addSubview:btn]; } } return cell; } -(void)click:(CommonButton *)btn{ NSLog(@"-->%zi",btn.tag); int tag=btn.tag; BOOL flag=[[self.chooseArrary objectAtIndex:tag] boolValue]; if (flag) { [self.chooseArrary replaceObjectAtIndex:tag withObject:[NSNumber numberWithBool:!flag]]; [btn setImage:[UIImage imageNamed:@"radio_normal"] forState:UIControlStateNormal]; } else{ [self.chooseArrary replaceObjectAtIndex:tag withObject:[NSNumber numberWithBool:!flag]]; [btn setImage:[UIImage imageNamed:@"radio_selected"] forState:UIControlStateNormal]; } } -(void)CkAllSelect{ for (int i=0; i<self.MyData.count;i++) { [self.chooseArrary replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:YES]]; } [_tableview reloadData]; } -(void)CkNotAllSelect{ for (int i=0; i<self.MyData.count;i++) { [self.chooseArrary replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:NO]]; } [_tableview reloadData]; } - (void)dealloc { [_chooseArrary release]; [_MyData release]; [super dealloc]; } @end
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
//    [self RadioButtonSelect];
//    UIButton *btn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
//    btn.frame=CGRectMake(0, 100, 50,50);
//    [self.view addSubview:btn];
//    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
       NSArray *arr=@[@"标题1",@"标题2",@"标题3",@"标题4"];
    CheckView *checkView=[[CheckView alloc] initWithFrame:CGRectMake(0, 0, 320, 200) Data:arr];
    _CK=checkView;
    [self.view addSubview:checkView];
    [checkView release];
  
    
}