UITableview中怎么找到每个cell

一个朋友问我:我在每个cell中都添加了两个按钮(记为btnA和btnB),点击btnA时,对应的cell中添加一个子控件,再点击btnB时,对应的cell中的子控件就移除,怎么做到?

百度了一下,发现了解决办法:

首先,创建btn时,给每个btn加一个tag值

//创建cell方法
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString * iden=@"iden";
    _cell=[tableView dequeueReusableCellWithIdentifier:iden];
    if (_cell==nil) {
        _cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:iden];
    }
    
    UIButton * btnA=[UIButton buttonWithType:UIButtonTypeCustom];
    btnA.frame=CGRectMake(0, 0, 50, 20);
    btnA.tag = 1000 + indexPath.row;
    btnA.backgroundColor=[UIColor greenColor];
    [btnA addTarget:self action:@selector(btnBClick:) forControlEvents:UIControlEventTouchUpInside];
    
    [_cell.contentView addSubview:btnA];
    
    UIButton * btnB=[UIButton buttonWithType:UIButtonTypeCustom];
    btnB.tag = 2000 + indexPath.row;
    btnB.frame=CGRectMake(100, 0, 50, 20);
    btnB.backgroundColor=[UIColor redColor];
    [btnB addTarget:self action:@selector(btnAClick:) forControlEvents:UIControlEventTouchUpInside];
    [_cell.contentView addSubview:btnB];
    return _cell;
}
 1 //添加子控件按钮代码
 2 -(void)btnBClick:(UIButton *)btn
 3 {
 4     NSString * path=[[NSBundle mainBundle]pathForResource:@"1" ofType:@"mp4"];
 5     NSURL * url=[NSURL fileURLWithPath:path];
 6     _mp=[[MPMoviePlayerViewController alloc]initWithContentURL:url];
 7     _mp.view.backgroundColor=[UIColor purpleColor];
 8     _mp.moviePlayer.controlStyle=MPMovieControlStyleDefault;
 9     
10     _mp.view.frame=CGRectMake(0, 0, self.view.frame.size.width, 200);
11     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:btn.tag - 1000 inSection:0];
12     UITableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];// 竟然还有这个方法,第一次用
13     [cell.contentView addSubview:_mp.view];
14     [_tableView reloadData];
15 }
 1 //移除子控件按钮代码
 2 -(void)btnAClick:(UIButton *)btn
 3 {
 4     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:btn.tag - 2000 inSection:0];
 5     UITableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
 6     if ([cell.contentView.subviews containsObject:_mp.view]) {
 7         [_mp.view removeFromSuperview];
 8     }
 9     else
10         return;
11 }

给添加了红色的几行代码,就搞定了!

我去,这个方法亮了,我已经被闪瞎了!

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
 UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
 cell.detailTextLabel.text= [self.dateFormatter stringFromDate:self.pickerView.date];
原文地址:https://www.cnblogs.com/hyuganatsu/p/eachCell.html