#swift #xcode #scroll #uiscrollview #uicollectionview
#swift #xcode #прокрутка #uiscrollview #uicollectionview
Вопрос:
У меня есть контроллер просмотра профиля, и его родительский вид является scrollView
. Но внутри него есть collectionView
для рецептов.
Пример изображения:https://i.stack.imgur.com/ziRC7.png
Я хочу управлять прокруткой между scrollView
и collectionView
. Итак, в моей scrollViewDidScroll
функции я написал этот код, но он не работает.
class userProfileView: UIViewController ,UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate {
@IBOutlet weak var recipesCollectionView: UICollectionView!
@IBOutlet weak var main_scrollview: UIScrollView!
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if (recipesCollectionView.contentOffset.y <= 0 amp;amp; main_scrollview.contentOffset.y < (main_scrollview.contentSize.height - main_scrollview.frame.size.height)) {
main_scrollview.isScrollEnabled = true
recipesCollectionView.isScrollEnabled = false
}
else if (main_scrollview.contentOffset.y >= (main_scrollview.contentSize.height - main_scrollview.frame.size.height)) {
main_scrollview.isScrollEnabled = false
recipesCollectionView.isScrollEnabled = true
}
}
}
В чем проблема?
Заранее спасибо!
Комментарии:
1. Обработка вложенной прокрутки всегда сопряжена с трудностями; вам следует рассмотреть возможность использования единого представления коллекции
2. @RicoCrescenzio к сожалению, я не могу использовать одну коллекцию. Есть ли какой-нибудь способ обработать это с помощью кода?
Ответ №1:
Вложенными прокручиваемыми представлениями может быть сложно управлять. Вы должны написать логику для таких вещей, как скорость, и откуда начиналась прокрутка.
Вы могли бы использовать tableview с ячейкой, внутри которой есть представление коллекции.Это позволит устранить проблемы, с которыми вы сталкиваетесь, поскольку логика прокрутки обрабатывается за вас.
Как правило, я бы не стал использовать пользовательские виды прокрутки, если у вас нет очень веской причины. tableViews и CollectionViews достаточно эффективны для большинства распространенных макетов и сценариев.