В приложении, над которым я работаю, у меня есть контроллер панели вкладок с четырьмя экранами.
Внутри каждой области с вкладками находится отдельный стек контроллера навигации для экранов, относящихся к этой части приложения.
Один из это раздел Настройки, и здесь я хочу, чтобы пользователь мог изменить свое местоположение, если это необходимо. Как и в разделе «Настройки» на 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.)