Я следовал учебнику here и должен был внести несколько изменений в соответствии с моим проектом (code of my variation here, извините, я поместил его в GitHub, потому что он немного длинный для копирования и вставки). Иногда, когда я сажусь прямо, чтобы добраться до последнего VC, он автоматически закрывается в поле зрения. В других случаях он работает правильно, если я прокручиваю последний VC, он остается там до тех пор, пока я снова не коснусь его, чтобы закрыть его. Я разместил в заявке операторы печати, чтобы помочь мне найти, где ошибка. Вот print statements when it works и when it doesn't work. Глядя на журналы, поскольку тот же самый код доступен в том же порядке, я не уверен, как исправить эту ошибку. Эта проблема не возникает, когда стиль перехода PageCurl
вместо Scroll
.Ошибка прокрутки PageViewController (над свитками)
ответ
Прежде всего вам нужно знать, как работают страницыПросмотрКонтроллеры.
После загрузки первой страницы в тот момент, когда вы начнете ее прокручивать, вы попытаетесь загрузить следующую страницу. это только для первой страницы. после этого, как только вы достигнете страницы, она предварительно загрузит следующую страницу (в зависимости от направления) и подготовит ее.
В вашем случае, когда вы достигаете Page 5 pageViewController попытается преднагрузки следующей странице, которая ведет к этой части кода
guard orderedViewControllersCount != nextIndex else {
print("last item in coachamrks going to dismiss")
self.dismissViewControllerAnimated(true, completion: nil)
return orderedViewControllers.first
}
и уволит ViewController как только вы достигнете страницы 5.
Это не ошибка. Это поведение по умолчанию для pageViewController.
Я думаю, причина, по которой вы иногда находите, что она ведет себя так, как вы ошибочно ожидаете, заключается в том, что при прокрутке страниц достаточно быстро страницаViewController останавливает предварительную загрузку страниц по соображениям производительности.
Единственный способ добиться того, что вы хотите, - это хакерский способ доступа к scrollView внутри pageViewController, но он небезопасен и может нарушить ваше приложение, если Apple изменит архитектуру pageViewControllers в будущем обновлении.
Предлагаю вам положить кнопку на последней странице и использовать ее, чтобы закрыть страницуПросмотр.
Пожалуйста, не заставляйте меня ссылаться на какую-либо другую страницу, чтобы увидеть ваши журналы. Или ваш соответствующий код. – matt
Можете ли вы объяснить, что означает «закрывается на виду»? Я даже не могу сказать, в чем проблема. Вы не пытались описать архитектуру ситуации. – matt