我正在做一个需要扩展单元格的应用程序,以显示更多细节。我使用了自定义单元格并将它们添加到UItableview中。当我点击单元格时,它会动画很好并且向下移动,当我再次单击它时,它会上升,这是通过更改单元格的高度来完成的。实际的自定义单元格大小比我通常显示的单元格大。当我点击细胞时,显示整个细胞。我遇到的唯一问题是数据溢出。未选择单元格时,应隐藏这些数据。只有在选择时才应显示这些数据。
我提到了不同的文章,尝试改变颜色设置绑定对我不起作用。 我在这个问题iphone uitablecellview overflow中遇到了同样的问题,尝试了答案但是没有用。
我需要的是如何在未扩展时隐藏自定义单元格的底部,并在扩展时显示它!...
这些是我的屏幕截图
当它被加载
当我点击一个单元格]
当我点击第二个单元格时
当我点击已经扩展的单元格时
这些是我用过的代码片段......
// Declaring the SearchResultTable.
CGRect filterFrame = CGRectMake(0,31, 320, 400);
self.searchResultTable = [[UITableView alloc] initWithFrame:filterFrame];
self.searchResultTable.dataSource = self;
self.searchResultTable.delegate = self;
self.searchResultTable.backgroundColor = [UIColor whiteColor];
self.searchResultTable.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
self.searchResultTable.separatorColor = [UIColor lightGrayColor];
[self.view addSubview:self.searchResultTable];
//Adding cells
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"ExpandedSearchResultTableCell";
ExpandedSearchResultTableCell *cell = (ExpandedSearchResultTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell.contentView.clipsToBounds = YES;
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ExpandedSearchResultTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.productNameLable.text = @"Only this should be shown";
cell.productListLabel.text = @"This Should be hidden.. Only shown when expanded";
cell.productApplicationLable.text=@"This Should be hidden.. Only shown when expanded";
cell.productTargetLable.text= @"This Should be hidden.. Only shown when expanded";
cell.productQuantityLable.text=@"This Should be hidden.. Only shown when expanded";
cell.productReactivityLable.text=@"This Should be hidden.. Only shown when expanded";;
return cell;
}
//on click event
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Deselect cell
[tableView deselectRowAtIndexPath:indexPath animated:TRUE];
// Toggle 'selected' state
BOOL isSelected = ![self cellIsSelected:indexPath];
// Store cell 'selected' state keyed on indexPath
NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected];
[selectedIndexes setObject:selectedIndex forKey:indexPath];
// This is where magic happens...
[searchResultTable beginUpdates];
[searchResultTable endUpdates];
}
//Getting the height depending on expanded or not
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// If our cell is selected, return double height
if([self cellIsSelected:indexPath]) {
return kCellHeight * 3.0;
}
// Cell isn't selected so return single height
return kCellHeight;
}
答案 0 :(得分:1)
如果您正在寻找具有普通tableview类型的单元格扩展,
iPhone UITableView with animated expanding cells
如果你正在使用分组的tableview并希望扩展部分标题的选择,
答案 1 :(得分:1)
好的,我通过在didSelectRowAtIndexPath中使用单个标志和对cellForRowAtIndexPath单元的引用来完成它。并根据折叠和拉伸设置我的标签可见和隐藏。根据是否选择了单元格,相应地更新标志...... !!
谢谢你帮助大家..!
答案 2 :(得分:0)
Ooops,大量代码使你的帖子变脏了。
我没有查看你的代码。
我会解释你的逻辑。
cell.productNameLable.text = @"Only this should be shown"; cell.productListLabel.text = @"This Should be hidden.. Only shown when expanded"; cell.productApplicationLable.text=@"This Should be hidden.. Only shown when expanded"; cell.productTargetLable.text= @"This Should be hidden.. Only shown when expanded"; cell.productQuantityLable.text=@"This Should be hidden.. Only shown when expanded"; cell.productReactivityLable.text=@"This Should be hidden.. Only shown when expanded";;
这会使您的代码变脏。 如果要在一个单元格中显示所有数据,并且在选择一个部分时仅添加一个单元格,我建议将所有这些添加到不同的单元格中。
我仍然感到困惑,为什么要进行这些长编码,Please refer this answer for better explanation