В моем табличном представлении я должен прокрутить к вершине. Но я не могу гарантировать, что первым объектом будет секция 0, строка 0. Может быть, мое табличное представление начнется с секции № 5.
Поэтому я получаю исключение, когда звоню:
[mainTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
Есть ли другой способ прокрутки до верхней части таблицы?
ios
uitableview
Илья Суздальницкий
источник
источник
self.tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: UITableViewScrollPosition.top, animated: true)
кажется, работает в iOS 11Примечание . Этот ответ не подходит для iOS 11 и более поздних версий.
я предпочитаю
Если у вас есть верхняя вставка в табличном представлении, вы должны вычесть это:
источник
tableView
ненулевойcontentInset
сверху. Например:tableView.contentInset = UIEdgeInsetsMake(5.0f, 0.0f, 250.0f, 0.0f);
. Если это так, в вашем кодеtableView
прокручивается до(0.0f, 5.0f)
.[tableView setContentOffset:CGPointMake(0.0f, -tableView.contentInset.top) animated:YES];
-scrollView.adjustedContentInset.top
вместо.Возможные действия:
1
2
3
4
5
Отключить Scroll To Top:
Изменить и использовать его согласно требованию.
Swift 4
источник
Лучше не использовать NSIndexPath (пустая таблица) и не предполагать, что верхняя точка - это CGPointZero (вставки содержимого), вот что я использую -
Надеюсь это поможет.
источник
Свифт 4 :
Это работает очень хорошо:
источник
UITableViewStyleGrouped
(заголовки прокручивается с содержимым), и этот код работает. Убедитесь, что вы находитесь в главном потоке, и вы запускаете этот код после появления представления (viewDidAppear
). Если у вас все еще есть проблемы, попробуйте поместить код внутри этого:DispatchQueue.main.asyncAfter(deadline: .now()+0.1, execute: { // the code }
Я столкнулся с проблемой вызова некоторых методов на пустом месте
tableView
. Вот еще один вариант для Swift 4, который обрабатывает пустые просмотры таблиц.Применение:
источник
НЕ ИСПОЛЬЗУЙТЕ
Иногда может неправильно установить смещение. Например, в моем случае, камера была немного выше обзора со вставками безопасной зоны. Фигово.
ВМЕСТО ИСПОЛЬЗОВАНИЯ
источник
В iOS 11 используйте
adjustedContentInset
для правильной прокрутки вверх для обоих случаев, когда строка состояния вызова отображается или нет.Swift:
источник
Для таблиц, которые имеют
contentInset
, установка смещения содержимого наCGPointZero
не будет работать. Он будет прокручиваться до верхней части содержимого, а не до верхней части таблицы.Принятие содержимого во внимание производит это вместо этого:
источник
Этот код позволяет прокручивать определенный раздел вверх
источник
Swift:
источник
Свифт 3
если
tableView.setContentOffset
не работаетИспользование:
источник
Так как мой
tableView
полон всевозможных вставок, это было единственное, что сработало хорошо:Свифт 3
Swift 2
источник
В дополнение к тому, что уже было сказано, вы можете создать расширение (Swift) или категорию (Objective C), чтобы упростить это в будущем:
Swift:
В любое время, когда вы хотите прокрутить любой данный tableView к вершине, вы можете вызвать следующий код:
источник
Я предпочитаю следующее, так как оно учитывает вкладку. Если вставка отсутствует, она все равно будет прокручиваться вверх, так как вставка будет 0.
источник
Свифт:
если у вас нет заголовка tableView:
если так :
источник
Swift 5, iOS 13
Я знаю, что на этот вопрос уже есть много ответов, но из моего опыта есть только один метод, который всегда работает:
tableView.scrollToRow(at: IndexPath(row: someArray.count - 1, section: 0), at: .bottom, animated: true)
Если вы работаете в асинхронном режиме, с таблицами, которые анимируются с помощью клавиатуры и т. Д., Другие ответы часто будут прокручиваться почти до самого низа, а не до абсолютного дна. Этот метод приведет вас к абсолютному концу таблицы каждый раз.
источник
Вот что я использую для корректной работы на iOS 11:
источник
В Swift 5, спасибо @ Адриан ответ много
Применение:
источник
использование contentOffset не является правильным способом. это было бы лучше, так как это естественный способ представления таблицы
источник
Это был единственный фрагмент кода, который работал для меня
Свифт 4:
PS 70 - высота моего заголовка и ячейки табличного представления
источник
вызывайте эту функцию везде, где вы хотите, чтобы UITableView прокручивал вверх
источник
Swift 4 через расширение, обрабатывает пустой вид таблицы:
источник
Я использую tabBarController, и у меня есть несколько разделов в моем табличном представлении на каждой вкладке, так что это лучшее решение для меня.
источник
Я должен был добавить умножение
-1 *
на сумму в строке состояния и панели навигации, потому что она уходила на ту высоту от экрана,источник
быстро
ваш ряд = selectioncellRowNumber вашего раздела, если у вас есть = selectionNumber, если вы не установили, равен нулю
//UITableViewScrollPosition.Middle или Bottom или Top
источник
Вот код для ScrollTableView, чтобы вверх программно
Swift:
источник
В Swift-3:
источник
Если вы хотите переместить анимацию прокрутки в таблицу, используйте этот код. Прокрутка переместится наверх с анимацией за 0,5 секунды.
источник
С Swift:
источник