Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扩展/收缩UITableViewCell高度在iOS7中不再起作用_Ios_Objective C_Uitableview_Ios7 - Fatal编程技术网

扩展/收缩UITableViewCell高度在iOS7中不再起作用

扩展/收缩UITableViewCell高度在iOS7中不再起作用,ios,objective-c,uitableview,ios7,Ios,Objective C,Uitableview,Ios7,所以我不久前使用了这个有用的教程:它在iOS6中工作得非常好。但是现在,由于我一直在将我的一些应用程序更新到iOS7,代码无法工作。。。我不知道为什么。代码检查得很好,它记录了哪些单元格被选中,哪些单元格没有使用NSMutableDictionary,起初我认为它只是没有在Dictionary中正确排序,但事实并非如此。我得出了一个可能的结论,那就是当苹果更新iOS时,可能会发生一些变化。下面是我的代码: 首先,我要记录单元格是否被选中。“SelectedIndex”是我的NSMutableDi

所以我不久前使用了这个有用的教程:它在iOS6中工作得非常好。但是现在,由于我一直在将我的一些应用程序更新到iOS7,代码无法工作。。。我不知道为什么。代码检查得很好,它记录了哪些单元格被选中,哪些单元格没有使用
NSMutableDictionary
,起初我认为它只是没有在Dictionary中正确排序,但事实并非如此。我得出了一个可能的结论,那就是当苹果更新iOS时,可能会发生一些变化。下面是我的代码:

首先,我要记录单元格是否被选中。“SelectedIndex”是我的
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
):


这在以前没有问题,但由于某些原因,现在一些细胞会膨胀,而另一些细胞不会。。。我真的不明白这一点,因为字典正在记录正确的indexPath及其值,无论是选中的还是未选中的。希望有人谁有一个类似的问题,也许可以告诉我在正确的方向?谢谢。

我不知道为什么在iOS 6上这样做,但为了确保系统知道您的手机发生了变化,您应该调用
self.tableView reloadRowsAtIndexPaths:…

作为旁注,将有关选择的数据存储为一组可能更容易。布景太棒了!如果您使用
NSIndexSet
,则不需要将原始整数强制转换为
NSNumber
。啊,好的-实际上可能就是这样。我会试试看它是否能解决问题。我试过使用
self.tableView reloadRowsAtIndexPaths:…
,但似乎没有多大区别:/。谢谢你的建议!这很奇怪。如果添加
重新加载rowsatindexpaths
并删除
[self.tableView beginUpdates],是否在单元格选择后调用
高度索引路径:
?是的,很好用。我想这是多重选择的问题。。。由于某种原因,它没有正确阅读词典的内容。。好的,我已经设法找到了一个对我来说很好的功能替代方案,因为一次只能扩展一个单元更好!我可以从下面的答案中找到结果:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

if([self cellIsSelected:indexPath])
    return kCellHeight * 7;
 else
     return kCellHeight;

}