扩展/收缩 UITableViewCell 高度不再适用于 iOS7
Posted
技术标签:
【中文标题】扩展/收缩 UITableViewCell 高度不再适用于 iOS7【英文标题】:Expanding/Contracting UITableViewCell height no longer works in iOS7 【发布时间】:2013-09-27 09:24:35 【问题描述】:所以我不久前使用了这个有用的教程:http://locassa.com/animate-uitableview-cell-height-change/,它在 ios6 中运行良好。但是现在,由于我一直在将我的一些应用程序更新到 iOS7,所以代码不起作用......我不知道为什么。代码检查得很好,它记录了哪个单元格已被选中,哪个单元格没有使用NSMutableDictionary
起初我虽然只是没有正确排序字典中的选择,但事实并非如此。我得出的可能结论是,当 Apple 更新他们的 iOS 时,它可能会发生变化。下面是我的代码:
首先我记录单元格是否被选中'selectedIndexes'是我的NSMutableDictionary
。
- (BOOL)cellIsSelected:(NSIndexPath *)indexPath
// Return whether the cell at the specified index path is selected or not
NSNumber *selectedIndex = [selectedIndexes objectForKey:indexPath];
return selectedIndex == nil ? FALSE : [selectedIndex boolValue];
然后在我的 didSelect 方法中:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
BOOL isSelected = ![self cellIsSelected:indexPath];
if ([self cellIsSelected:indexPath])
//hide objects that are in expanded area of cell
else
//load objects as cell is selected
// Store cell 'selected' state keyed on indexPath
NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected];
[selectedIndexes setObject:selectedIndex forKey:indexPath];
[self.tableView beginUpdates];
[self.tableView endUpdates];
所以现在我已经设置了我想要在选择单元格时发生的事情,我已经定义了我想要的高度(kCellHeight
):
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
if([self cellIsSelected:indexPath])
return kCellHeight * 7;
else
return kCellHeight;
这之前没有任何问题,但由于某种原因,现在一些单元格会扩展而其他单元格不会......我真的不明白,因为字典正在记录正确的 indexPath 及其值,选择或未选中的。希望有类似问题的人能够指出我正确的方向?谢谢。
【问题讨论】:
附带说明,将有关选择的数据存储为一组可能更容易。套装太棒了!如果您使用NSIndexSet
,则无需将原始整数转换为NSNumber
。
【参考方案1】:
我不确定为什么这在 iOS 6 上按原样工作,但为了确保系统知道您的单元格发生变化,您应该致电 self.tableView reloadRowsAtIndexPaths:...
【讨论】:
啊,好吧-实际上可能是这样。我会试试看它是否能解决问题。 我尝试过使用self.tableView reloadRowsAtIndexPaths:...
,但似乎没有太大区别:/。不过感谢您的建议!
这很奇怪。如果添加reloadRowsAtIndexPaths
并删除[self.tableView beginUpdates];
,是否会在单元格选择后调用heightForRowAtIndexPath:
?
是的,效果很好。我认为这是它有问题的多项选择......由于某种原因,它没有正确阅读字典的内容..好吧,所以我设法得到了一个对我来说很好的功能替代品,因为它更好只能够一次扩大一个细胞!可以在这里找到我从底部答案中得到的结果:***.com/questions/18853293/…以上是关于扩展/收缩 UITableViewCell 高度不再适用于 iOS7的主要内容,如果未能解决你的问题,请参考以下文章
如何在不滚动 textView 的情况下使 UITableViewCell 的高度扩展以适应 UITextView 的内容并包装文本? (斯威夫特 5)
向左滑动时未剪切子视图以删除 UITableViewCell