2016-01-18 5 views
4

Есть ли возможность прокрутки в UICollectionView с помощью требуемого элемента. scrollToItemAtIndexPath и привязать не к самому элементу, а к странице, частью которой является элемент? (Я получил ПЕЙДЖИНГ включен.)UICollectionView - перейти к следующей странице

Приветствия

+0

Что вы подразумеваете под страницами товара? –

+0

Имеет ли каждая страница фиксированное количество ячеек сбора? –

+0

Yup, страница товара. У меня есть страницы, показывающие определенный месяц (это календарь). Но (почти) каждый месяц начинается с другого дня (пятница, понедельник и т. Д.), И я хочу прокрутить до раздела (месяца), который содержит текущий день. Поэтому, если я хочу прокрутить (скажем, это сейчас 14 декабря 2015 года), он отображает его следующим образом: https://imgur.com/TiDWW8X - вот почему я хочу привязать его к текущей странице/разделу – Ancinek

ответ

4

Вам нужно создать NSIndexPath чем свитка к этому индексу.

//Mark: - Move to cell when view did appear 

overload viewDidAppear() { 


    let scrollIndex: NSIndexPath = NSIndexPath(forItem: dayIndex, inSection: monthSection) 
    if (// Check you are in range of UIcollectionView's count) { 
     //Scroll collectionview according to your requirement i.e UICollectionViewScrollPositionCenteredHorizontally or UICollectionViewScrollPosition.Left 
     self.YourCollectionView.scrollToItemAtIndexPath(scrollIndex, atScrollPosition: UICollectionViewScrollPositionCenteredHorizontally, animated: true) 
    } 
} 
+0

Я добавил комментарий выше о проекте – Ancinek

+0

Обновленный ответ. –

+0

Но дело в том, что оно не привязывается к странице. Он прокручивается до самой ячейки, и это хорошо, но для ячеек, расположенных в центре страницы (раздел), я получаю представление: imgur.com/TiDWW8X. Кроме того, я не знаю, если это важно, но я не хочу, чтобы это произошло после нажатия, я хочу, чтобы это произошло, когда вы загружаете представление, поэтому я пытаюсь реализовать это .scrollToItemAtIndexPath в viewDidAppear – Ancinek

2

В конце концов я использовал свойство offsetContent;

Я знал ширину каждой так называемой страницы.

  1. Я написал код, чтобы получить indexPath на текущий день
  2. Я извлек раздел indexPath
  3. я умноженной раздел по ширине зрения и назвал его «смещение»
  4. I установите для моего UICollectionView.contentOffset.x значение «offset», и он отлично работает.

Я также попытался с помощью .scrollRectToVisible и смещения, и это работало удивительно, но я также хотел обновляемое то, что было основано на contentOffset в UICollectionView и .scrollRectToVisible, похоже, не обновлять это свойство - это был обновлен только после того, как я немного потянул представление.

Спасибо за вашу помощь!

+0

Можете ли вы, пожалуйста, показать свой код? У меня есть аналогичная проблема https://stackoverflow.com/questions/45673446/uicollectionview-offscreen-auto-scroll-for-paging – Maulik

Смежные вопросы