所以我不久前使用了这个有用的教程: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 及其值,选择或未选择。希望有类似问题的人能够指出我正确的方向?谢谢。