iPhone-使用自定义单元格展开UITableView,并在选择框上隐藏/显示标签 我在UIView中有一个UITableView 表视图的单元格是自定义的,因此由UITableViewCell类管理

iPhone-使用自定义单元格展开UITableView,并在选择框上隐藏/显示标签 我在UIView中有一个UITableView 表视图的单元格是自定义的,因此由UITableViewCell类管理,iphone,height,cell,show-hide,expand,Iphone,Height,Cell,Show Hide,Expand,我需要在选择单元格时展开/收缩单元格,这是我使用awesome教程完成的。但是,我还需要在选择时显示/隐藏UILabels——就像详图视图一样,当您展开单元格时,会显示更多标签;将其收缩回原始大小,这些标签将再次隐藏 基本上: 单击 延长单元格长度 显示标签 再次单击 收缩单元 隐藏标签 一次只能打开一个单元格 这听起来很简单,但是网络上普遍使用的方法(我在上面链接的教程)会在第一次触摸时自动取消选择单元格,这意味着我隐藏的UILabel永远不会出现 如果我删除 [tableView desel

我需要在选择单元格时展开/收缩单元格,这是我使用awesome教程完成的。但是,我还需要在选择时显示/隐藏UILabels——就像详图视图一样,当您展开单元格时,会显示更多标签;将其收缩回原始大小,这些标签将再次隐藏

基本上:
单击
延长单元格长度
显示标签

再次单击
收缩单元
隐藏标签

一次只能打开一个单元格

这听起来很简单,但是网络上普遍使用的方法(我在上面链接的教程)会在第一次触摸时自动取消选择单元格,这意味着我隐藏的UILabel永远不会出现

如果我删除

[tableView deselectRowAtIndexPath:indexPath animated:TRUE];
从didSelectRowAtIndexPath,我可以看到隐藏标签,但它当然不会消失,因为在我选择其他单元格之前,单元格不会被取消选择

如何使单元格在用户第二次单击后恢复到正常高度时自动取消选择?另外,是否有一种方法将表一次仅限于一个展开的单元格,因为现在可以完全展开所有单元格。我希望扩展Cell2会自动将Cell1收缩回其原始高度

谢谢大家,;有时我不知道如果没有堆栈溢出我会怎么做

TableViewController.h

@interface TableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    IBOutlet UITableView *tableView;
    NSMutableDictionary *selectedIndexes;
}
@end
此外,UITableCell类中的UILabel:

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    if (selected == YES){
        date.hidden = NO;   
    }   
    else if (selected == NO) {
        date.hidden = YES;
    }
}

我是个白痴。最简单的解决方案总是最好的,这是一行代码:

 self.contentView.clipsToBounds = YES;
当您设置单元格并将其布局时

无法正常工作,因为您取消选择了单元格,所以BOOL selected始终为NO;)
所以,data.hidden=是的,永远…

有时候事情比你想象的要容易得多,当我看到你回答:D+1时,我也有一个“哑巴”时刻。如果有人像我一样使用故事板/笔尖,您可以通过在屏幕右侧的视图属性中选中“剪辑子视图”来实现相同的效果:属性/视图/绘图我正在显示,在我当前的项目中动态隐藏单元格。我也找到了更好的方法来实现这一点。更方便的方法更简单:)。这两条神奇的线将更新
 self.contentView.clipsToBounds = YES;
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
if (selected == YES){
    date.hidden = NO;   
}   
else if (selected == NO) {
    date.hidden = YES;
}