转:解决uitableviewcell重绘出现重叠的现象

当我们的uitableview为透明或者判断cell是否为空时,会发现uitableveiwcell会出现重叠,下面为自己的解决办法,提供给各位参考
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell=nil;
    static NSString *reuse=@"cell";
    if (cell==nil) {
        cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuse] autorelease];
    }else{
        while ([cell.contentView.subviews lastObject] != nil) {  
            [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];  //删除并进行重新分配
        }  
    }
    
    cell.textLabel.text=@"cell";
    
    return cell;
}

转:http://blog.sina.com.cn/s/blog_75b6e3a601015u4s.html

 

更好的写法:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdetify = @"cell";
    UITableViewCell *tvCell = [tableView dequeueReusableCellWithIdentifier:cellIdetify];
    
    if(tvCell == nil)
    {
        NSLog(@"cell = nil");
        tvCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdetify] autorelease];
    }else{
        NSLog(@"cell !=nil ");
        NSArray *views = [tvCell subviews];
        for (UIView *obj in views) {
            if (obj.tag==1000 || obj.tag==2000) {      //只删除指定的画面,不要全部删除,否则tableview的分割线也会被删除
                NSLog(@"cell 要删除的子画面是:%@",[obj class]);
                [obj removeFromSuperview];
            }
        }

 

posted @ 2013-06-13 18:26  ygm900  阅读(989)  评论(0编辑  收藏  举报