コレクションビューがあります。日付を水平に表示するカレンダーを作成し、日付を水平にスクロールします。現在、画面には3〜4日しか表示されていません。今、カレンダー画面を表示したときに特定の選択した日付に自動スクロールしたいので、スクロールしたい日付がまだ表示されていません。
そのために、特定のセルのインデックスパスを取得しました。現在、特定のインデックスパスにスクロールしようとしています。
func scrollCollectionView(indexpath:IndexPath)
{
// collectionView.scrollToItem(at: indexpath, at: .left, animated: true)
//collectionView.selectItem(at: indexpath, animated: true, scrollPosition: .left)
collectionView.scrollToItem(at: indexpath, at: .centeredHorizontally, animated: true)
_ = collectionView.dequeueReusableCell(withReuseIdentifier: "DayCell", for: indexpath) as? DayCell
}
実装方法を教えてください。
コントローラーのviewDidLoad
には、コレクションビューの特定のインデックスパスにスクロールするためのコードを記述できます。
self.collectionView.scrollToItem(at:IndexPath(item: indexNumber, section: sectionNumber), at: .right, animated: false)
これを使用できます
self.collectionView.scrollToItem(at:IndexPath(item: index, section: 0), at: .right, animated: false)
Swift 4では、これは私のために働いた:
override func viewDidLayoutSubviews() {
collectionView.scrollToItem(at:IndexPath(item: 5, section: 0), at: .right, animated: false)
}
他の場所に配置すると、奇妙なビジュアルになります。
私はあなたの答え@PGDevを使用しましたが、viewWillAppear
に入れました。
self.collectionView?.scrollToItem(at:IndexPath(item: yourIndex, section: yourSection), at: .left, animated: false)