RelatedCompanyCell.h里

@property (strong, nonatomic) IBOutlet UIImageView *companyPhoto;

@property (strong, nonatomic) IBOutlet UILabel *companyName;

@property (strong, nonatomic) IBOutlet UIButton *companyCheck;

 

 

RelatedCompanyController.m里

 

 

   //创建全选按钮添加点击事件

    UIButton *allCheckBtn = [[UIButton alloc]initWithFrame:CGRectMake(SCREEN_WIDTH - 50, 65, 20, 20)];

    [allCheckBtn addTarget:self action:@selector(allCheckAction) forControlEvents:UIControlEventTouchUpInside];

    [allCheckBtn setBackgroundImage:[UIImage imageNamed:@"unchecked"] forState:UIControlStateNormal];

    [headerView addSubview:allCheckBtn];

   

    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
    }
}

 

posted on 2017-09-27 10:40  i兮兮  阅读(538)  评论(0编辑  收藏  举报