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];
  • 相关阅读:
    Matlab之rand(), randn(), randi()函数的使用方法
    matlab给图片插入说明文字
    matlab之find()函数
    excel根据数据源变化的动态图表
    高斯坐标
    (转)Mysql技术内幕InnoDB存储引擎-表&索引算法和锁
    (转)MySQL 插入数据时,中文乱码问题的解决
    (转)防止人为误操作MySQL数据库技巧一例
    (转)mysql explain详解
    (转)一个MySQL 5.7 分区表性能下降的案例分析
  • 原文地址:https://www.cnblogs.com/hyuganatsu/p/eachCell.html
Copyright © 2011-2022 走看看