有没有办法根据点击单元格来改变 uitableview 单元格的大小?例如:宽度为 100.0f 的单元格,第一次单击单元格将宽度更改为 150.0f,第二次单击单元格将宽度更改回 100.0f。我怎样才能做到这一点?
问问题
86 次
2 回答
1
您需要维护一个布尔值,在每次后续单击时更改此布尔值。
现在基于这个 bool 定义你的cellForRowAtIndexPathmethod
和 ondidSelectRowAtIndexPath
方法,只需更新 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 回答