scrollToRow не прокручивается точно - PullRequest
0 голосов
/ 20 февраля 2020

В приложении, над которым я работаю, у меня есть контроллер панели вкладок с четырьмя экранами.
Внутри каждой области с вкладками находится отдельный стек контроллера навигации для экранов, относящихся к этой части приложения.
Один из это раздел Настройки, и здесь я хочу, чтобы пользователь мог изменить свое местоположение, если это необходимо. Как и в разделе «Настройки» на iPhone.

. Таким образом, у меня есть список стран, сгруппированных по разделам на основе их начальных букв, в виде UITableView. Выбрана страна по умолчанию, и, как и в случае настроек iPhone, я бы хотел, чтобы UITableView показывал эту страну в качестве верхней строки при ее первом представлении.

В настоящее время у меня есть scrollToRow поместите в viewDidLoad следующим образом:

override func viewDidLoad() {
    super.viewDidLoad()

    // Code to sort countries into sections and to find the correct initial country, index of which is store in selectedIndex

    self.tableView.layoutIfNeeded()
    self.tableView.scrollToRow(at: selectedIndex ?? IndexPath(row: 0, section: 0), at: .top, animated: false)
}

Теперь, если начальная страна находится в верхней части списка, все работает без проблем. Но если он находится около дна, скажем, в Соединенном Королевстве, он не прокручивается до самого верха, а только около верха - несмотря на то, что он может прокручиваться дальше. Это почти как если бы он забыл, что панель вкладок присутствует и не будет прокручиваться выше. Вручную, конечно, у него нет проблем с прокруткой выше. (Я не уверен, как включить изображение в этот пост, отсюда и описание.)

У меня была другая проблема с scrollToRow через несколько месяцев go, и я решил ее, вставив tableView.layoutIfNeeded() непосредственно перед вызов scrollToRow, следовательно, это включение здесь. Но здесь это не работает.

Я попытался сделать звонок на scrollToRow в viewDidAppear, как было рекомендовано в одной из прочитанных мной статей, но затем таблица представляется без страны, видимой ранее ' прыгать на правильный ряд. Я бы хотел, чтобы он был там, когда откроется экран.

У кого-нибудь есть идеи? Спасибо.

(я использую Xcode 11.3 для среды iOS 11.0.)

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