0

セルのクリックに応じて uitableview セルのサイズを変更する方法はありますか? たとえば、幅が 100.0f のセルの場合、最初のクリックでセルの幅が 150.0f に変更され、2 回目のクリックでセルの幅が 100.0f に戻ります。これどうやってするの?

4

2 に答える 2

1

ブール値を維持する必要があります。その後のクリックごとにこのブール値を変更してください。

このboolに基づいて、メソッドを定義しcellForRowAtIndexPathmethoddidSelectRowAtIndexPathboolを更新して、をリロードしtableます。

于 2012-06-04T11:31:16.380 に答える
1

NSIndexPath オブジェクトを使用して NSMutableDictionary のインデックスを作成できるはずです。これにより、クリックした TVCell に必要なサイズをキャッシュできます。次に、実行時にそれらを引き出します。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
   NSNumber *newHeight;
   NSNumber *height = [[self heightCache] objectForKey:indexPath];

   if (height == nil) newHeight = [NSNumber numberWithFloat:100.0];
   else newHeight = [NSNumber numberWithFloat:[height doubleValue] + 50];
   [[self heightCache] setObject:newHeight forKey:indexPath];
   [tableView reloadData]; // also consider reloadRowsAtIndexPaths:
}

一方、デリゲートで:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSNumber height = [heightCache objectForKey:indexPath];
   return height == nil ? defaultHeight : [height floatValue];
}

更新:おっと、あなたは TVCells がどんどん大きくなるという意味だと思っていました。はい、私の例のフロートをブール値に変更してから、行の高さでブール値に基づいて高さを返します。

于 2012-06-04T11:39:39.447 に答える