0

iOS開発初心者です。動的な高さの tableView を使用しています。これをクリックすると、tableViewCellの高さが増減します。このコードを使用しています...

    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([self.selectedPath isEqual:indexPath])
    {
        return 250;
    }
    else
    {
        return 44;
    }

}

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

    self.selectedPath = indexPath;
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation: UITableViewRowAnimationLeft];
    self.selectedRowIndex = [NSNumber numberWithInteger:indexPath.row];
    [self.tableView1 deselectRowAtIndexPath:indexPath animated:YES];

    //First we check if a cell is already expanded.
    //If it is we want to minimize make sure it is reloaded to minimize it back
    if( onSelectCount==1 )
    {
        NSLog(@"num=%d",onSelectCount);
        NSLog(@"First Condition");
        [tableView beginUpdates];
        NSIndexPath *previousPath = [NSIndexPath indexPathForRow:self.selectedRowIndex.integerValue inSection:0];
        self.selectedRowIndex = [NSNumber numberWithInteger:indexPath.row];
        self.selectedPath=indexPath;
        [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:previousPath] withRowAnimation:UITableViewRowAnimationFade];
        [tableView endUpdates];
    }

    if(self.selectedPath.row!=indexPath.row)
    {
        [tableView beginUpdates];
        [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:selectedPath] withRowAnimation:UITableViewRowAnimationFade];
        [tableView endUpdates];

        selectedPath=indexPath;
        onSelectCount=0;
        [self tableView:tableView didSelectRowAtIndexPath:selectedPath];
    }

    if(self.selectedRowIndex.integerValue == indexPath.row && onSelectCount==2)
    {
        [tableView beginUpdates];
        self.selectedRowIndex = [NSNumber numberWithInteger:-1];
        [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
        onSelectCount=0;
        [tableView endUpdates];

        }
}

tableViewCell に情報を表示するラベルを追加したいのですが、セルをクリックすると完全にサイズ変更されますが、セルのラベルのサイズは変更されません。セルの高さで UILabels のサイズを変更する方法を教えてください。どんな助けでも大歓迎です...

4

1 に答える 1

0

メソッド- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathを使用してこれを実現します。セルの高さを変更するためのロジック全体を didSelectRow から cellForRowAtIndexPath に移動することも良いことです。

あなたの質問に答えるには:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    CGRect sizeRect = cell.textLabel.frame;
    sizeRect.size.height = cell.contentView.frame.size.height;
    cell.textLabel.frame = sizeRect;

    return cell;
}

ここで、textLabel はラベルの名前です。基本的な考え方は、ラベルのフレームを取得し、その高さをセルのビューの高さに設定してから、新しいサイズをラベルに設定することです。

于 2013-10-03T12:33:54.663 に答える