在uitableviewcell上多次点击

时间:2012-06-04 11:25:28

标签: objective-c ios uitableview

是否有某种方法可以根据单击单元格更改uitableview单元格大小?例如:宽度为100.0f的单元格,在第一次单击单元格时将宽度更改为150.0f,对于第二次单击单元格,将宽度更改为100.0f。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您需要维护一个bool值,在每次后续点击时更改此bool值。

现在基于此bool定义您的cellForRowAtIndexPathmethoddidSelectRowAtIndexPath方法,只需更新bool并重新加载table

答案 1 :(得分: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变得越来越大。是的,只需将我的示例中的浮动更改为bools,然后在行的高度中返回基于bool的高度。