扩展的 UITableviewCell 高度不可管理

expanded UITableviewCell height not manageable

我在我的应用程序中使用 this,我为 UITableview 创建了两个标识符,一个是 "normal cell",另一个是 "expended cell",当有人点击 "normal cell"。我的问题是我无法分别管理两个单元格的高度,例如我希望正常单元格高度为 120,扩展单元格为 60。但是如果我更改 heightForRowAtIndexPath 中的高度,则两个单元格显示相同的高度。这是我的代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    FSParallaxTableViewCell *cell = nil;
    static NSString *cellIdentifier = nil;
    if ([indexPath isEqual:self.expandedIndexPath]) {
        cellIdentifier = @"ExpandedCell";
    }
    else {
        cellIdentifier = @"NormalCell";
    }
    cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        cell = [[FSParallaxTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    if ([[cell reuseIdentifier] isEqualToString:@"ExpandedCell"]) {
        cell.contentView.backgroundColor = [UIColor grayColor];
    }
    if ([[cell reuseIdentifier] isEqualToString:@"NormalCell"]) {
        [cell.cellImageView sd_setImageWithURL:[NSURL URLWithString:[[rssOutputData objectAtIndex:indexPath.row]xmllink]]
                              placeholderImage:[UIImage imageNamed:@"placeholder"] options:indexPath.row == 0 ? SDWebImageRefreshCached : 0];
        cell.clipsToBounds = YES;
    }
    return cell;
}
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // disable touch on expanded cell
    UITableViewCell *cell = [self.theTableView cellForRowAtIndexPath:indexPath];
    if ([[cell reuseIdentifier] isEqualToString:@"ExpandedCell"]) {
        return;
    }
    // deselect row
    [tableView deselectRowAtIndexPath:indexPath
                             animated:NO];
    // get the actual index path
    indexPath = [self actualIndexPathForTappedIndexPath:indexPath];
    // save the expanded cell to delete it later
    NSIndexPath *theExpandedIndexPath = self.expandedIndexPath;
    // same row tapped twice - get rid of the expanded cell
    if ([indexPath isEqual:self.expandingIndexPath]) {
        self.expandingIndexPath = nil;
        self.expandedIndexPath = nil;
    }
    // add the expanded cell
    else {
        self.expandingIndexPath = indexPath;
        self.expandedIndexPath = [NSIndexPath indexPathForRow:[indexPath row] + 1
                                                    inSection:[indexPath section]];
    }
    [tableView beginUpdates];
    if (theExpandedIndexPath) {
        [theTableView deleteRowsAtIndexPaths:@[theExpandedIndexPath]
                            withRowAnimation:UITableViewRowAnimationNone];
    }
    if (self.expandedIndexPath) {
        [theTableView insertRowsAtIndexPaths:@[self.expandedIndexPath]
                            withRowAnimation:UITableViewRowAnimationNone];
    }
    [tableView endUpdates];
    // scroll to the expanded cell
    [self.theTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle
                                     animated:YES];
}

谁能帮我解决这个问题我想分别为两个单元格设置高度。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
    }
    if ([[cell reuseIdentifier] isEqualToString:@"ExpandedCell"]) {
        return 60;
    }
    if ([[cell reuseIdentifier] isEqualToString:@"NormalCell"]) {
        return 120;
    }
}

在 heightForAtIndexpath 方法中添加以下代码

 if ([indexPath isEqual:self.expandedIndexPath]) {
    return 60.0;
}
else 
   return 120.0f;

您必须单独设置 table 视图单元格的高度。您可以根据 row.In 以下代码分别设置高度,我已将第一行高设置为 35,第二行高设置为 70,其余行的高度将设置为 65。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

        switch (indexPath.row)

        {
            case 0:

                return 35;
                break;

            case 1:
                return 70;
                break;

            default:

                return 65;
                break;

        }


    }