RelatedCompanyCell.h裏ide
@property (strong, nonatomic) IBOutlet UIImageView *companyPhoto;atom
@property (strong, nonatomic) IBOutlet UILabel *companyName;spa
@property (strong, nonatomic) IBOutlet UIButton *companyCheck;3d
RelatedCompanyController.m裏code
//建立全選按鈕添加點擊事件orm
UIButton *allCheckBtn = [[UIButton alloc]initWithFrame:CGRectMake(SCREEN_WIDTH - 50, 65, 20, 20)];blog
[allCheckBtn addTarget:self action:@selector(allCheckAction) forControlEvents:UIControlEventTouchUpInside];事件
[allCheckBtn setBackgroundImage:[UIImage imageNamed:@"unchecked"] forState:UIControlStateNormal];get
[headerView addSubview:allCheckBtn];it
self.allCheckBtn = allCheckBtn;
//給每個cell上的按鈕添加點擊事件
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
RelatedCompanyCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseItemIdentifier forIndexPath:indexPath];
//關閉UITableView cell的被選中效果
cell.selectionStyle = UITableViewCellSelectionStyleNone;
//設置邊框
cell.layer.borderColor= [UIColor lightGrayColor].CGColor;
cell.layer.borderWidth= 0.3;
[cell.companyCheck addTarget:self action:@selector(cellBtnClicked:event:) forControlEvents:UIControlEventTouchUpInside];
cell.companyCheck.tag = indexPath.row;
return cell;
}
//單選
- (void)cellBtnClicked:(UIButton*)sender event:(id)event
{
NSSet *touches =[event allTouches];
UITouch *touch =[touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:_tableView];
NSIndexPath *indexPath= [_tableView indexPathForRowAtPoint:currentTouchPosition];
if (indexPath!= nil)
{
sender.selected = !sender.selected;
if (sender.selected) {
[sender setImage:[UIImage imageNamed:@"checked"] forState:UIControlStateNormal];
}else{
[sender setImage:[UIImage imageNamed:@"unchecked"] forState:UIControlStateNormal];
}
}
}
//全選
- (void)allCheckAction{
for (RelatedCompanyCell *cell in self.tableView.visibleCells) {
cell.companyCheck.selected = !cell.companyCheck.selected;
if (cell.companyCheck.selected) {
[cell.companyCheck setImage:[UIImage imageNamed:@"checked"] forState:UIControlStateNormal];
[_allCheckBtn setBackgroundImage:[UIImage imageNamed:@"checked"] forState:UIControlStateNormal];
}else{
[cell.companyCheck setImage:[UIImage imageNamed:@"unchecked"] forState:UIControlStateNormal];
[_allCheckBtn setBackgroundImage:[UIImage imageNamed:@"unchecked"] forState:UIControlStateNormal];
}
}
}
其中經過cell上的button獲取cell 若是用superview的話會很麻煩
能夠經過這樣的方法獲取:
[cell.btn addTarget:
self
action:
@selector
(cellBtnClicked:event:) forControlEvents:UIControlEventTouchUpInside];
- (
void
)cellBtnClicked:(UIButton*
)sender event:(
id
)event
{
NSSet
*touches =[event allTouches];
UITouch *touch =[touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:_tableView];
NSIndexPath
*indexPath= [_tableView indexPathForRowAtPoint:currentTouchPosition];
if
(indexPath!=
nil
)
{
// do something
}
}