将UIView添加到重用的UITableViewCell中?

时间:2013-11-01 21:45:22

标签: ios iphone objective-c uitableview

我拼命想要达到以下效果:我有一个tableview,我想在选择时扩展单元格并显示一些其他信息。我重复使用表格单元格,仅供参考。在过去,我能够在另一个应用程序中实现这样的效果,但这似乎根本不适合我。所有对此至关重要的方法都会被调用,行会很好地展开,但additionalInfo方法中的showExpandedContents表格不会出现!

  • 如果我在单元格的初始化中创建 additionalInfo表,则表格会出现,但是当我然后尝试加载数据时(并且通过那个,也是细胞)它不会重新加载表。 但是明确调用负责此(showExpandedContents)表的方法。
  • 如果我初始化 AND 在单元格的初始化代码中设置表格,一切正常。

所以这里有一些代码:

以下是单元格设置:

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

    static NSString *cellID = @"MyCustomCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

    if(cell == nil){
        cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }

    ((MyCustomCell*)cell).data = [arrayToDisplay objectAtIndex:indexPath.row];


    return cell;
}

以下是选择方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{


    [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    //setting the current cell as the expandedRow, so that I can collapse it later
    expandedRow = [tableView cellForRowAtIndexPath:indexPath];
    [((MyCustomCell*)expandedRow) showExpandedContents];
    [tableView beginUpdates];
    [self changeRowHeightAtIndex:indexPath.row height:330];
    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    [tableView endUpdates];



}

以下是-showExpandedContents中的MyCustomCell方法,我想在其中显示其他信息:

-(void)showExpandedContents{

    additionalInfo = [[UITableView alloc] initWithFrame:CGRectMake(0, 80, self.frame.size.width, 250)];
    [additionalInfo loadContent];
    additionalInfo.backgroundColor = UIColorFromRGB(0xf9f9f9, 1.0);
    additionalInfo.layer.zPosition = MAXFLOAT;
    [self.contentView addSubview:additionalInfo];

}

1 个答案:

答案 0 :(得分:1)

看起来像你的

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

给你一个新的单元格,不同于showExpandedContents调用的单元格。

删除此行应解决问题。