Сепараторная строка появляется после выбора последней строки в разделе

Я вижу странное поведение во всех своих UITableView. Это начинает приводить меня в бешенство.

У меня есть простые UITableViews. Последняя строка в секции не получает разделителя, она просто вписывается в заголовок раздела (по умолчанию используется по умолчанию). Проверяя высоту этой последней строки, кажется, что Apple делает ее на 1px больше, чтобы удалить высоту разделителя из ячейки. Проблема в том, что когда я выбираю строку, но перетаскиваю ее, линия разделителя появляется и никогда не исчезает. Если я вернусь назад и вернусь, он по умолчанию отключится.

Я вижу это во всех моих табличных представлениях, нормальных ячейках и пользовательских ячейках. Что я могу сделать, чтобы убедиться, что последний разделитель остается, когда я отменяю выбор? iOS 7 только строить. Запуск текущих сборок, без бета.

Ответ 1

Для меня перезагрузка ячейки помогла решить некоторые проблемы с разделителями:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}

- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}

Ответ 2

Если вы измените стиль tableView в раскадровке с простого на сгруппированный, вы не получите этого поведения. Тем не менее, он даст вам заголовок раздела над вашим разделом. Чтобы избавиться от него, сделайте это -

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 0.01f;
}