Ios中checkBox
2013-08-30 10:35 甘超波 阅读(2354) 评论(0) 编辑 收藏 举报//使用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]; }
目前我正在专注NLP,请立刻加微信/QQ号 546611623, 免费送你原创《NLP高级执行师》高清视频