實現UITableViewCell的全選單選效果

 

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
     }
}
相關文章
相關標籤/搜索