我正在通过以下方式扩展我的手机:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(selectedRow && indexPath.row == selectedRow.row) {
        tableView.scrollEnabled = NO;
        return 480;
    }
    return 250;
}

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

    selectedRow = indexPath;
    [tableView beginUpdates];
    [tableView endUpdates];

    CGFloat height = 250.0f;//cell height
    tableView.contentInset = UIEdgeInsetsMake(0, 0, height * indexPath.row, 0);

   [tableView setContentOffset:CGPointMake(0, (indexPath.row * height) )animated:YES];

}


每当我选择一个单元格时,它都可以正常工作,但它确实可以扩展,但是我不知道如何将其恢复到原来的高度。有什么想法吗?

最佳答案

尝试这个

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(selectedRow && indexPath.row == selectedRow.row) {
        tableView.scrollEnabled = NO;
        return 480;
    }
    tableView.scrollEnabled = YES;
    return 250;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat height = 250.0f;
    if (selectedRow && indexPath.row == selectedRow.row) {
        NSIndexPath *index = [NSIndexPath indexPathForRow:selectedRow.row inSection:selectedRow.section];
        selectedRow = nil;
        [tableView reloadRowsAtIndexPaths:@[index] withRowAnimation:UITableViewRowAnimationNone];

        tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
        [tableView setContentOffset:CGPointMake(0, 0 )animated:NO];

    } else {
        selectedRow = indexPath;
        [tableView beginUpdates];
        [tableView endUpdates];

        tableView.contentInset = UIEdgeInsetsMake(0, 0, height * indexPath.row, 0);
        [tableView setContentOffset:CGPointMake(0, (indexPath.row * height) )animated:NO];
    }

}

关于ios - 如何取消展开展开的UITableView单元格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22500462/

10-14 21:37