SDNestedTable扩展在iOS 7上不起作用

Svi*_*miv 0 custom-controls uitableview uikit nested-table ios

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

Svi*_*miv 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];
}
Run Code Online (Sandbox Code Playgroud)

最简单的解决方案是创建一些具有值的键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];
}
Run Code Online (Sandbox Code Playgroud)