是否有某种方法可以根据单击单元格更改uitableview单元格大小?例如:宽度为100.0f的单元格,在第一次单击单元格时将宽度更改为150.0f,对于第二次单击单元格,将宽度更改为100.0f。我怎样才能做到这一点?
答案 0 :(得分:1)
您需要维护一个bool值,在每次后续点击时更改此bool值。
现在基于此bool定义您的cellForRowAtIndexPathmethod
和didSelectRowAtIndexPath
方法,只需更新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的高度。