Подтвердить что ты не робот

Отображение ячеек таблицы при выборе на iOS 8

Я пытаюсь обновить свои приложения для iOS 8, и одна странная проблема, которую я не могу понять, заключается в том, что всякий раз, когда я нажимаю на ячейку таблицы (в виде сгруппированной таблицы) и нажимаю другой контроллер просмотра на навигацию контроллер, все ячейки таблицы вид прыгать. Это похоже на то, что все они немного уменьшают их высоту.

Следовательно, при появлении навигационного стека и возвращении к исходному экрану просмотра таблицы клетки снова прыгают, на этот раз они увеличивают свою высоту и возвращаются к тому, как они были изначально.

Я попытался использовать UITableViewController, выполнив свое собственное управление представлением таблиц, не используя высоту раздела экспликации, удалив все пользовательские виды заголовков и фреймы, в основном все, что я мог придумать.

Это происходит на всех эмуляторах iOS 8 и на реальных запусках устройств iOS 8 и iPhone, и iPads.

Любые предложения действительно помогут.

Изменить: удалено видео

4b9b3361

Ответ 1

Хорошо, поэтому, если вы используете по умолчанию UITableViewCell и устанавливаете настраиваемые шрифты для textLabel и detailTextLabel, убедитесь, что вы либо установили rowHeight для представления таблицы, либо использовали один из UITableViewDelegate методы, например tableView:estimatedHeightForRowAtIndexPath:

Тот же код отлично работает в более ранних версиях iOS, но по какой-то причине требует исправления на iOS 8.

Ответ 2

У меня была такая же проблема! Похоже, что iOS 8 SDK использует оцененный RowHeight после выбора строки, которая затем приводит к неправильной высоте для всего tableview, что вызывает скачок самого представления таблицы.

Не задание свойства measuredRowHeight или реализация метода делегата будет исправлять ошибку.

Я еще не нашел чистого решения для его исправления.

Ответ 3

Вы можете добиться самоограничения с помощью этого кода:

implement together:
tableView.rowHeight = UITableViewAutomaticDimension; 
tableView.estimatedRowHeight = CGFloatValue (initial estimated height);

в вашей раскадровке, добавьте правильное ограничение на ваши ячейки.

Примечание: проблема с переходом по-прежнему будет отображаться иногда.

точное решение для этой проблемы перехода реализует метод делегата:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

return CGFloat;

}