滚动到一个集合视图到一个物种索引
Posted
技术标签:
【中文标题】滚动到一个集合视图到一个物种索引【英文标题】:Scrolling to a collectionView to a specie Index 【发布时间】:2016-10-04 11:25:01 【问题描述】:我有一个带有多个单元格的collectionView
,当我加载它时,我想选择一个特定的单元格,将其显示为选中并将集合视图滚动到该选定单元格的位置,而无需自己进行滚动。
我可以将单元格显示为选中状态,但提供的功能似乎无法滚动。
这是我的尝试。
class RepsCellView: UICollectionViewCell, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout
lazy var repsValuesCollectionView: UICollectionView =
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.backgroundColor = UIColor.black
collectionView.showsHorizontalScrollIndicator = false
collectionView.translatesAutoresizingMaskIntoConstraints = false
return collectionView
()
override init(frame: CGRect)
super.init(frame: frame)
setupViews()
required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")
func setupViews()
addSubview(repsValuesCollectionView)
//...
// Cell
let selectedIndex = IndexPath(item: 19, section: 0)
repsValuesCollectionView.selectItem(at: selectedIndex, animated: true, scrollPosition: [.centeredHorizontally, .centeredVertically])
// CollectionView DataSource Functions
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 100
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
return cell
提前致谢。
【问题讨论】:
【参考方案1】:您使用什么 ViewController 事件方法来运行您的代码?
无论如何我都可以滚动它,将您的代码放在 ViewController 事件方法 viewDidAppear
方法中。
class CollectionViewController: UICollectionViewController
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
let cellToSelect = IndexPath(item: 99, section: 0)
self.collectionView?.scrollToItem(at: cellToSelect, at: [.centeredHorizontally, .centeredVertically], animated: true)
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 1
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! RepsCellView
cell.setupViews() // added this line
return cell
【讨论】:
我更新了我的代码问题。我从包含 CollectionView 的 CollectionViewCell 调用该方法。 我已经更新了我的答案,在你的父根 collectionView 的代码中,在方法cellForItemAt
中调用 cell.setupViews()
,就像我在我的代码中所做的那样。以上是关于滚动到一个集合视图到一个物种索引的主要内容,如果未能解决你的问题,请参考以下文章