UITableView Cell的扩展视图不显示子视图?

时间:2014-08-28 13:50:49

标签: ios uitableview uiview

我正在点击扩展UITableView单元。当单元格扩展时,我必须加载UIView。我的问题是我能够在几次看到UIView,有时它不会显示? UIView将被加载到每个扩展的单元格中。

扩展就像这样: -

 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
  CGFloat kExpandedCellHeight =300;
  CGFloat normalCellHeight = 94;
  if ([self.expandedCells containsObject:indexPath]) {

    return kExpandedCellHeight;
  }else{
    return normalCellHeight;
}

}


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

static NSString *cellIdentifier = @"Cell";
ListCell *cell =(ListCell*) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil) {
    NSArray *nibs = [[NSBundle mainBundle]loadNibNamed:@"ListCell" owner:self options:nil];
  cell = nibs[0];
}

cell.Name.text = [[nameArray objectAtIndex:indexPath.row]valueForKey:@"opName"];


if (isExpanded) {
     backgroundView = [[UIView alloc]initWithFrame:CGRectMake(0, 95, 320,205)];
    [backgroundView setBackgroundColor:[UIColor colorWithRed:(235/255) green:(235/255) blue:(235/255) alpha:0.1]];
    [cell.contentView addSubview:backgroundView];

    container = [[UIView alloc]initWithFrame:CGRectMake(40, 67, 240, 120)];
    container.backgroundColor = [UIColor whiteColor];

    //I am adding buttons to this scrollview after webservice response,once buttons are loaded I am trying to load the above container on the background view.
    container_scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(20, 5, 220, 110)];
    [container_scrollView setBackgroundColor:[UIColor whiteColor]];
    [container addSubview:container_scrollView];      

  }

  return cell;

  }

现在我收到来自webservice.Buttons的回复。但是我可以看到有时加载的容器视图,有时它没有显示。原因是什么?导致这种行为的原因是什么?

这是我将容器加载到背景视图的方式。

   //After container is loaded with buttons.
    if(backgroundView){
       [backgroundView addsubView:container];

     }

声明内容:

  @interface ListViewController ()
 {

   UIView *backgroundView;//Used in expanded cell.
   UIView *container;
   BOOL isExpanded;  //I set this to NO in viewDidLoad initially.
   UIScrollView *container_scrollView;

}

1 个答案:

答案 0 :(得分:0)

您应该考虑在故事板或两个xib文件上放置两个不同的单元格,每个单元格都有相应的单元标识符。一个是正​​常细胞,另一个是扩增细胞。然后,每当用户点击一个普通单元格时,您应该用您的第二个类型单元格(扩展单元格)替换该特定单元格(重绘)。

<强>更新

为了执行单元格的更新,您可以使用任何这些方法。 more here

reloadData 
reloadRowsAtIndexPaths:withRowAnimation:
reloadSections:withRowAnimation:

这些将导致您的某些表视图数据源委托方法再次被调用,然后您应该使用一些逻辑来决定要绘制哪种类型的单元格。快速草稿:

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

    // Here you should implement your custom logic to check if you want a basic or expanded cell.
    if (IWantBasicCell) {
        cellIdentifier = @"basicCell";
    } else {
        cellIdentifier = @"expandedCell"
    }

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    [cell myCustomLoadInformationMethod:myCustomData];
    return cell;

}