4

非常に単純な質問...

UItableViewで現在の行(クリックされた行)のみの高さを変更できますか?

注:残りの行のサイズに影響を与えたくありません。

4

4 に答える 4

8

はい、できます。最後に選択した行を保持する変数が必要です。例:

@property (nonatomic, assign) NSInteger selectedRow;

... 次に、メソッドを実装します

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.row == self.selectedRow) {
        return 100.;
    }

    return 44.;
}

次に、メソッドを更新します。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    if(self.selectedRow == indexPath.row)
        self.selectedRow = -1;
    else
        self.selectedRow = indexPath.row;

    //The magic that will call height for row and animate the change in the height
    [tableView beginUpdates];
    [tableView endUpdates];
}

:デフォルトは であるため、最初にself.selectedRowwith-1値を初期化します0

于 2013-05-13T10:49:04.237 に答える
1

heightForRowAtIndexPath行の高さの設定に使用できます

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

あなたはその特定のものをチェックしNSIndexPathて返すことができますheightindexpath

于 2013-05-13T10:50:33.117 に答える
0

はい、できますが、選択した行のインデックスパスを保存する必要があり、selectedRow 変数を負の値で初期化する必要があります。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    selectedRow = indexpath.row;
    [tblView reloadData];
}

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == selectedRow)
        return 150.0f;

    return 30;
}
于 2013-05-13T10:53:47.833 に答える
0
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.row == rowtochangeheight) {
        return 60;
    }
    else
    {
        return 44;
    }


}
于 2013-05-13T10:51:44.543 に答える