for_2012 2013-01-05 03:44 采纳率: 0%
浏览 3413
已采纳

重复重叠tableview单元

tableView单元在滚动时重复,并且与其他的互相重叠,应该怎么修复?

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 11;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIButton *buyBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImageView *img;
    UILabel *lbl;
    UIImageView *backImage;
    UILabel *textLabel;
    UILabel *detailTextLabel;

    NSInteger val = [indexPath row] * 3;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        backImage =  [[UIImageView alloc] initWithFrame:CGRectMake(2, 4, 316, 62)];
        [buyBtn setFrame:CGRectMake(257, 35, 57, 24)];
        img = [[UIImageView alloc] initWithFrame:CGRectMake(257, 10, 57, 24)];

        lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 57, 24)];
        textLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, 4, 230, 25)];
        detailTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, 25, 230, 30)];

        backImage.image = [UIImage imageNamed:@"shop-bg.png"];
        [buyBtn setImage:[UIImage imageNamed:@"buy_button"] forState:UIControlStateNormal];
        [img setImage:[UIImage imageNamed:@"price_button.png"]];
    }
    else
    {
        backImage =  [[UIImageView alloc] initWithFrame:CGRectMake(2, 4, 316, 62)];
        [buyBtn setFrame:CGRectMake(257, 35, 57, 24)];
        img = [[UIImageView alloc] initWithFrame:CGRectMake(257, 10, 57, 24)];

        lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 57, 24)];
        textLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, 4, 230, 25)];
        detailTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, 25, 230, 30)];

        backImage.image = [UIImage imageNamed:@"shop-bg.png"];
        [buyBtn setImage:[UIImage imageNamed:@"buy_button"] forState:UIControlStateNormal];
        [img setImage:[UIImage imageNamed:@"price_button.png"]];
    }



    lbl.center = img.center;
    lbl.textAlignment =  UITextAlignmentCenter;
    lbl.text = [self.original_List objectAtIndex:val+2];
    lbl.backgroundColor = [UIColor clearColor];

    textLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:14];
    textLabel.backgroundColor = [UIColor clearColor];
    textLabel.text = [self.original_List objectAtIndex:val];

    detailTextLabel.text = [self.original_List objectAtIndex:val+1];
    detailTextLabel.backgroundColor = [UIColor clearColor];
    detailTextLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:10];
    textLabel.textColor = [UIColor blackColor];
    detailTextLabel.textColor = [UIColor whiteColor];
    detailTextLabel.numberOfLines = 2;

    [buyBtn setTag:[indexPath row]];
    [buyBtn addTarget:self action:@selector(buyBtnPressed:) forControlEvents:UIControlEventTouchDown];



    static NSString *myIdentifier = @"myIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myIdentifier];
    NSLog(@"%d" , [[cell subviews] count]);
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myIdentifier];
    }
             cell.accessoryType = UITableViewCellAccessoryNone;
        [cell setSelectionStyle:UITableViewCellEditingStyleNone];
        cell.backgroundColor = [UIColor clearColor];

    [cell.contentView addSubview:backImage];
    [cell.contentView addSubview:detailTextLabel];
    [cell.contentView addSubview:textLabel];
    [cell.contentView addSubview:buyBtn];
    [cell.contentView addSubview:img];
    [cell.contentView addSubview:lbl];
    return cell;
}
  • 写回答

2条回答

  • for_2012 2013-01-05 05:16
    关注

    改为下面的代码就解决了,呵呵

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UIButton *buyBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        UIImageView *img;
        UILabel *lbl;
        UIImageView *backImage;
        UILabel *textLabel;
        UILabel *detailTextLabel;
    
        NSInteger val = [indexPath row] * 3;
    
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        {
            backImage =  [[UIImageView alloc] initWithFrame:CGRectMake(2, 4, 316, 62)];
            [buyBtn setFrame:CGRectMake(257, 35, 57, 24)];
            img = [[UIImageView alloc] initWithFrame:CGRectMake(257, 10, 57, 24)];
    
            lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 57, 24)];
            textLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, 4, 230, 25)];
            detailTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, 25, 230, 30)];
    
            backImage.image = [UIImage imageNamed:@"shop-bg.png"];
            [buyBtn setImage:[UIImage imageNamed:@"buy_button"] forState:UIControlStateNormal];
            [img setImage:[UIImage imageNamed:@"price_button.png"]];
        }
        else
        {
            backImage =  [[UIImageView alloc] initWithFrame:CGRectMake(2, 4, 316, 62)];
            [buyBtn setFrame:CGRectMake(257, 35, 57, 24)];
            img = [[UIImageView alloc] initWithFrame:CGRectMake(257, 10, 57, 24)];
    
            lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 57, 24)];
            textLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, 4, 230, 25)];
            detailTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, 25, 230, 30)];
    
            backImage.image = [UIImage imageNamed:@"shop-bg.png"];
            [buyBtn setImage:[UIImage imageNamed:@"buy_button"] forState:UIControlStateNormal];
            [img setImage:[UIImage imageNamed:@"price_button.png"]];
        }
    
    
    
        lbl.center = img.center;
        lbl.textAlignment =  UITextAlignmentCenter;
        lbl.text = [self.original_List objectAtIndex:val+2];
        lbl.backgroundColor = [UIColor clearColor];
    
        textLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:14];
        textLabel.backgroundColor = [UIColor clearColor];
        textLabel.text = [self.original_List objectAtIndex:val];
    
        detailTextLabel.text = [self.original_List objectAtIndex:val+1];
        detailTextLabel.backgroundColor = [UIColor clearColor];
        detailTextLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:10];
        textLabel.textColor = [UIColor blackColor];
        detailTextLabel.textColor = [UIColor whiteColor];
        detailTextLabel.numberOfLines = 2;
    
        [buyBtn setTag:[indexPath row]];
        [buyBtn addTarget:self action:@selector(buyBtnPressed:) forControlEvents:UIControlEventTouchDown];
    
    
    
        static NSString *myIdentifier = @"myIdentifier";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myIdentifier];
        NSLog(@"%d" , [[cell subviews] count]);
        //if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myIdentifier];
        }
                 cell.accessoryType = UITableViewCellAccessoryNone;
            [cell setSelectionStyle:UITableViewCellEditingStyleNone];
            cell.backgroundColor = [UIColor clearColor];
    
        [cell.contentView addSubview:backImage];
        [cell.contentView addSubview:detailTextLabel];
        [cell.contentView addSubview:textLabel];
        [cell.contentView addSubview:buyBtn];
        [cell.contentView addSubview:img];
        [cell.contentView addSubview:lbl];
        return cell;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。