zoukankan      html  css  js  c++  java
  • 关于cell中添加子视图 复用重叠问题的解决方法

    问题本质:  
    因为你要添加的子视图并不是在自定义的cell中实现的,而是根据系统给的UITableViewCell这个类创建的实例,每次进图 cellForRow方法都会创建一个cell,每次都要创建一个子视图添(button,label之类的)加进去,会给占用很大的内存,所以采用了复 用的方法,但是问题就来了,当cell超出界面,从队列中拿过来复用的时候,其中子视图的内容并没有消除,这样你会原来的基础上再创建一个子视图添加上去 遮住了原来的视图,一般视图都是透明的这样的话就变成了一层层的叠加.
    解决方法:

      下面给出得是一个label添加到cell中的例子

    将具体的视图实例,添加到cell的contentView中

    注意:如何在父视图中标识某个子视图?

    step1:在添加子视图时,指定tag值(大于0)

    step2:为了找出这个子视图,通过调用父视图的 viewWithTag 方法,就可以找到指定的视图

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell1" ];

        if (cell==nil) {

            cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell1"];

        }

        //把索引给系统  forIndexPath:indexPath为注册准备的,如果要自己创建的话,就把这个去掉

        // cell.detailTextLabel.text=@"detail.. ";

       // cell.imageView.image=[UIImage imageNamed:@"icon1.png"];

        

        //cell.textLabel.text=@"helo";

        //先按照tag值试着去Cell中找,是否有标签

        UILabel  *label=(UILabel*)[cell.contentView viewWithTag:1];

        if (label==nil) {//如果没找到再新建

            label=[[UILabel alloc]init];

           //为label设置tag值

            label.tag=1;

            label.textColor=[UIColor redColor];

            label.font=[UIFont italicSystemFontOfSize:40];

            label.frame=CGRectMake(0, 0, cell.bounds.size.width, 42);

            label.textAlignment=NSTextAlignmentCenter;

            [cell.contentView addSubview:label];

        }

         label.text=[NSString stringWithFormat:@"   %ld", indexPath.row];

            

        return cell;

    }        

    追寻最真
  • 相关阅读:
    GitLab → 搭建中常遇的问题与日常维护
    GitLab → 搭建私有的版本控制的托管服务平台
    神奇的 SQL 之 ON 和 WHERE → 扑朔迷离,好多细节!
    神奇的 SQL 之 ICP → 索引条件下推
    神奇的 SQL 之 WHERE 条件的提取与应用
    记一次线上问题 → 事务去哪了
    神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)
    神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)
    python之pip安装mysql-python失败
    python之celery使用详解(二)
  • 原文地址:https://www.cnblogs.com/zhao-jie-li/p/5128465.html
Copyright © 2011-2022 走看看