scrollToRowAtIndexPath не прокручивается, чтобы исправить строку после 3/4 строк - PullRequest
1 голос
/ 04 октября 2010

У меня есть приложение для iPad с UITableView, которое имеет примерно 100 строк.Ячейки являются пользовательскими, я реализовал heightForRowAtIndexPath, чтобы сообщить UITableView, насколько велики мои ячейки.

Я использую это:

   [tableView scrollToRowAtIndexPath:indexPath 
              atScrollPosition:UITableViewScrollPositionMiddle animated:NO];

для прокрутки таблицы до заданной строки.Это отлично работает для ряда 1-75.Ряд 76 находится немного посередине, 76-79 - немного больше, а в ряду 80 он больше не прокручивается в правильное положение вообще.Это просто остается на месте с строкой 79, являющейся последним видимым рядом.Я все еще могу вручную прокручивать таблицу, перетаскивая палец, когда это происходит;это явно еще не в конце.Тем не менее, кажется, что программно scrollToRowAtIndexPath считает, достигло конца таблицы раньше, чем на самом деле.Я ожидал бы такого поведения в конце таблицы, а не в 3/4 строк.

Я изо всех сил пытаюсь отладить то, что здесь происходит;Я был бы признателен за любые указатели, которые помогут мне выяснить, почему таблица думает, что она уже в конце, когда я вызываю scrollToRowAtIndexPath.

Ответы [ 4 ]

3 голосов
/ 06 июня 2016

У меня была та же проблема, и я думаю, что понимаю, что происходит: табличное представление уже выполняет другую анимацию, а scrollToRowAtIndexPath игнорируется. У меня работает перенос метода в блок CATransaction (swift code):

CATransaction.begin()

tableView.beginUpdates()
tableView.scrollToRowAtIndexPath(cell.indexPath, atScrollPosition: .Middle, animated: true)
tableView.endUpdates()

CATransaction.commit()

Еще одним решением, которое мне помогло, было использование executeSelectorWithDelay, причем задержка была достаточно большой для завершения других анимаций в табличном представлении.

2 голосов
/ 15 июля 2011

Я заметил, что этот вопрос просматривается довольно часто, поэтому, возможно, больше людей столкнется с этой проблемой.В конце концов я обнаружил, что это не проблема стола.Это было расположено в представлении, которое неправильно функционировало при вращении устройства или изменении его размера из кода.Представление таблицы фактически выходило за границы представления, в котором оно находилось, поэтому вывод выглядел странно, но если учесть, что представление таблицы заканчивалось за пределами экрана, это действительно имело смысл.составьте иерархию представления и убедитесь, что изменение размера и вращение работали правильно.

1 голос
/ 25 августа 2011

попробуй:

[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:indexRow inSection:indexSection] 
                 atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
0 голосов
/ 04 октября 2010

Вы пишете, что вы переопределили heightForRowAtIndexPath:, но нечего переопределять. У вас должен быть делегат, который реализует протокол UITableViewDelegate, который должен вызываться tableView.

Если это уже так, вы должны проверить, правильно ли работает ваш делегат, зарегистрировав значения в heightForRowAtIndexPath или взломать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...