2013-09-24 3 views
3

У меня проблема с iOS 7 с пользовательским построением ячеек (на iOS 6 и 5 работает нормально).ios 7 изменения чертежа uitableviewcell

На высотеForRowAtIndexPath Я возвращаю меньшую высоту, чем реальная высота ячейки для последней строки каждого раздела, потому что мне нужно, чтобы последняя ячейка перекрывалась с заголовком следующего раздела.

Кажется, что Apple сделала улучшение чертежа или что-то на iOS 7, потому что только высота, возвращаемая с высотыForRowAtIndexPath, рисуется так, что моя ячейка будет вырезана внизу.

Любые идеи будут оценены.

ответ

0

Мда вот что я хотел бы сделать ...

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if (indexPath.row == [_array_todo count]) { 
     // last row 
     return 50; 
    }else{ 
     // not the last row 
     return 80; 
    } 
} 

Также подумайте, что вы делаете, когда выбрана ячейка ....

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    sel_path = indexPath; 
    [self.tableView beginUpdates]; 
    [self.tableView endUpdates]; 
} 
+0

Я сделал то же самое в heightForRowAtIndexPath перед iOS 7, но на iOS 7 работает неправильно. Если вы вернете 50 для последней строки, будет только рисовать высоту 50 px, поэтому нижняя часть ячейки не будет отображаться. – user2810234

+0

Пробовали ли вы подклассировать Cell и использовать метод - (bool) setSelected? вы можете скрыть, когда ячейка не выбрана, и показать снова, когда ячейка выбрана ... – Farini

+0

Как я уже говорил ранее, у меня уже есть пользовательская ячейка, и ячейка не может быть выбрана, вы не можете ее использовать. – user2810234

0

Я была такая же проблема и ситуация (нажатие последней ячейки с более низкой высотой, чтобы добавить больше данных). Я не исследовал, почему это происходит, но что-то сработало для меня. Я использовал данные для таблицы из NSDictionary. Он отлично работал для iOS6.1 и ранее. В iOS7 это привело к той же ошибке, что и ваша. Выделение данных в отдельный NSMutableArray в viewDidLoad разрешило его. Таким образом, вместо того, чтобы использовать везде в Tableview методов делегата

[self.data objectForKey:@"offers"] 

Я сделал

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    if (!tableData) tableData = [[NSMutableArray alloc] initWithArray:[self.data objectForKey:@"offers"]]; 
} 

И заменить все. Надеюсь, что это тоже поможет.

Смежные вопросы