web-dev-qa-db-ja.com

swiftのuicollectionviewで特定のインデックスにスクロールする方法

コレクションビューがあります。日付を水平に表示するカレンダーを作成し、日付を水平にスクロールします。現在、画面には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

  }

実装方法を教えてください。

12
Dhiraj Kumar

コントローラーのviewDidLoadには、コレクションビューの特定のインデックスパスにスクロールするためのコードを記述できます。

self.collectionView.scrollToItem(at:IndexPath(item: indexNumber, section: sectionNumber), at: .right, animated: false)
22
PGDev

これを使用できます

self.collectionView.scrollToItem(at:IndexPath(item: index, section: 0), at: .right, animated: false)

7

Swift 4では、これは私のために働いた:

override func viewDidLayoutSubviews() {

    collectionView.scrollToItem(at:IndexPath(item: 5, section: 0), at: .right, animated: false)
}

他の場所に配置すると、奇妙なビジュアルになります。

6
Pixel

私はあなたの答え@PGDevを使用しましたが、viewWillAppearに入れました。

self.collectionView?.scrollToItem(at:IndexPath(item: yourIndex, section: yourSection), at: .left, animated: false)
4
Vance Huang