2013-10-14 5 views
0

После нажатия на ячейку он не расширяется. Вопрос о выпуске указан на github. Проблема возникает только для iOS 7. В предыдущих версиях все работает нормально.SDNestedTable не работает на iOS 7

+1

Это не по теме, потому что это не вопрос. – Kreiri

+2

Я столкнулся с проблемой и не нашел решения. Я решил опубликовать здесь проблему и мое решение, потому что многие люди начинают поиск из Stack Overflow –

+3

, почему бы не вопрос? – HamasN

ответ

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]; 
} 
Смежные вопросы