0

单击单元格后,它不会展开。该问题在github上报告。该问题仅发生在 iOS 7 上。在以前的版本中,一切正常。

4

1 回答 1

14

问题是扩展的索引路径存储在 中NSDictionary,其中NSIndexPath是关键。在 iOS 7 方法中-(CGFloat)tableView:heightForRowAtIndexPath:接收UIMutableIndexPath对象而不是NSIndexPath对象。因此无法检索字典中的值。这是SDNestedTableViewController.m中的这个方法:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    int amt = [[subItemsAmt objectForKey:indexPath] intValue];
    BOOL isExpanded = [[expandedIndexes objectForKey:indexPath] boolValue];
    if(isExpanded)
    {
        return [SDGroupCell getHeight] + [SDGroupCell getsubCellHeight]*amt + 1;
    }
    return [SDGroupCell getHeight];
}

最简单的解决方案是创建一些键,其值来自indexPath. 并将成为NSIndexPath班级成员。所以我用以下方式改变了这个方法:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSIndexPath *indexPathKey = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section];
    int amt = [[subItemsAmt objectForKey:indexPathKey] intValue];
    BOOL isExpanded = [[expandedIndexes objectForKey:indexPathKey] boolValue];
    if(isExpanded)
    {
        return [SDGroupCell getHeight] + [SDGroupCell getsubCellHeight]*amt + 1;
    }
    return [SDGroupCell getHeight];
}
于 2013-10-14T07:30:52.237 回答