セルのクリックに応じて uitableview セルのサイズを変更する方法はありますか? たとえば、幅が 100.0f のセルの場合、最初のクリックでセルの幅が 150.0f に変更され、2 回目のクリックでセルの幅が 100.0f に戻ります。これどうやってするの?
質問する
86 次
2 に答える
1
ブール値を維持する必要があります。その後のクリックごとにこのブール値を変更してください。
このboolに基づいて、メソッドを定義しcellForRowAtIndexPathmethod
、didSelectRowAtIndexPath
boolを更新して、をリロードし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 に答える