扩展/收缩UITableViewCell高度不再适用于iOS7

时间:2013-09-27 09:24:35

标签: ios objective-c uitableview ios7

所以我前一段时间使用了这个有用的教程: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及其值,选中或未选中的。希望有类似问题的人可以指出我正确的方向?感谢。

1 个答案:

答案 0 :(得分:1)

我不确定为什么这样可以在iOS 6上运行,但为了确保系统知道您的小区更改,您应该调用self.tableView reloadRowsAtIndexPaths:...