1

我手动创建了两个标签,用于在名为 title 和 detail 的 tableviewcell 中显示它,显示它的代码是,

dealarray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",nil];

detailarray = [[NSMutableArray alloc]initWithObjects:@"oneoneoneoneone oneoneoneoneoneoneoooooooo",@"two",@"three",@"fouronefouronefouronefouronefouronefouronefouron",nil];

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
            for(UILabel *lbl in [cell.contentView subviews])
        {

            [lbl removeFromSuperview];


        }
        cell.accessoryType= UITableViewCellAccessoryNone;
        UILabel* title;

        title= [[UILabel alloc] initWithFrame:CGRectMake(5,5,300,20)];
        [cell.contentView addSubview:title];
        [cell.contentView bringSubviewToFront:title];
        [title setFont:[UIFont boldSystemFontOfSize:14]];
        title.tag = 1001;
        title.backgroundColor = [UIColor clearColor];

        title.textColor = [UIColor blackColor];
        title.text =[dealarray objectAtIndex:indexPath.row];

        UILabel* detail;
        detail= [[UILabel alloc] initWithFrame:CGRectMake(5,30,300,10)];
        [cell.contentView addSubview:detail];
        [cell.contentView bringSubviewToFront:detail];
        [detail setFont:[UIFont systemFontOfSize:12]];
        detail.tag = 1002;
        detail.backgroundColor = [UIColor clearColor];

        detail.textColor = [UIColor blackColor];

        detail.text = [detailarray objectAtIndex:indexPath.row];

  return cell
 }

显示这两个标签没有问题,隐藏所有“详细信息”标签并单独显示“标题”没有问题,当我尝试显示单元格的相应选择的“详细信息”标签时出现问题。

代码尝试:

 // conti of cellforrowatindexpath
 detail.numberOfLines = 3;
   detail.lineBreakMode = NSLineBreakByWordWrapping;

    if (a==-1)// declared 'a' in viewdidload as -1
      {
       ((UILabel*)detail).hidden = YES;
      }
    else if(a==indexPath.row)
       {
         ((UILabel*)detail).hidden = NO;
        }
       ((UILabel*)detail).hidden = YES;



return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 [tableView deselectRowAtIndexPath:indexPath animated:YES];
    a=indexPath.row;

[tableview reloadData];


 }

很抱歉发布大量代码,它可能会帮助任何正在搜索我怀疑的健康数据的人。

错误在做什么,我无法隐藏详细标签以分别选择单元格。有人可以在这方面提供帮助吗?

4

2 回答 2

0

你的逻辑有错误。您编写的代码将始终将 detail.hidden 设置为 YES,前面的两个 if 被忽略,因此(顺便说一句,您不需要类型强制和额外的括号):

if(a==-1) detail.hidden = YES;
否则 if (a==indexPath.row) detail.hidden = NO;
否则detail.hidden = YES;

于 2014-02-01T15:38:31.857 回答
0

我可以建议您使用 xcode 功能来设计您的单元格内容吗?(例如,就像在您的单元格上拖放 UILabel 一样简单)然后您将能够使用它们各自的“标签”ID 从您的代码中访问它们。正确的做法是在这里详细说明:http: //www.appcoda.com/customize-table-view-cells-for-uitableview/ 我认为这比以编程方式为您的单元格创建内容更好,因为使用 xcode 接口您将能够完美地定义您的界面。

无论如何,要准确回答您的问题,您应该尝试从 "didSelectRowAtIndexPath" 隐藏详细标签:

// Retrieve the corresponding cell
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

// Get the detail label (using its tag) you set it to 1002
UILabel *detail = (UILabel *)[cell viewWithTag:1002];

// Hide it
detail.hidden = true;

希望这有帮助。

于 2013-09-06T11:00:10.630 回答