我正在尝试以手风琴单元格模式展开/折叠tableview单元格。因此,当用户点击该行时,他们将通过扩展行高来获得单元格中所选行的详细描述。我有2个数组,'array'和'detailarray',用于在'cell.textLabel.text'和'cell.detailTextLabel.text'单元格中显示它。现在我最初将'cell.detailTextLabel.hidden = YES'视为隐藏,这样当用户点击该行时,可以获得该单元格的扩展文本。
我的代码,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
cell.textLabel.text=[array objectAtIndex:indexPath.row];
cell.detailTextLabel.text=[detailarray objectAtIndex:indexPath.row];
cell.detailTextLabel.hidden = YES;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSLog(@"indexpath is %d", indexPath.row);
selectedIndex = indexPath.row;
isSearching = YES;
[self.tableview beginUpdates];
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text=[array objectAtIndex:indexPath.row];
cell.detailTextLabel.text=[detailarray objectAtIndex:indexPath.row];
cell.detailTextLabel.hidden = NO;
[self.tableview endUpdates];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (isSearching && indexPath.row == selectedIndex)
{
return 77;
}
return 44;
}
现在我创建了一个包含4行的tableviewcell,当点击每一行时,我将获得所选行的扩展视图。 在运行期间,当我的单元格延伸时,我可以在单元格上看到“细节”文本,但是当didselectRowAtIndexPath函数停止时它会消失,为什么会这样,所以任何人都可以在这方面帮助我。
答案 0 :(得分:3)
查看SubTable,它会为您处理展开/折叠。
如果您正在寻找要在主要单元格下显示的单个细节单元格,您可以像这样实现委托方法:
- (NSInteger)numberOfChildCellsUnderParentIndex:(NSInteger)parentIndex {
if (detailarray[parentIndex] contains content)
return 1;
else
return 0;
}
并自定义单元格的高度并满足您的需求
答案 1 :(得分:0)
选择单元格后,请记住selectedIndex属性中的索引(必须创建一个)。
向表格视图添加功能:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return indexPath.row == selectedIndex ? extendedHeight : normalHeight;
}
选择单元格后,不要忘记重新加载tableView。