zoukankan      html  css  js  c++  java
  • 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];
  • 相关阅读:
    闭包
    正则的理解
    正则
    Date对象
    math对象
    js异步
    dom事件
    事件对象-2
    事件对象
    函数作用域
  • 原文地址:https://www.cnblogs.com/hyuganatsu/p/eachCell.html
Copyright © 2011-2022 走看看