我有一个水平UICollectionView
,有几个项目。当我选择其中一个时,我从API获取一些数据并将其显示在屏幕上。
当我开始滚动UICollectionView
以选择另一个类别时,焦点转到第一个选项而不会保留在我选择的最后一个项目中。
我不确定它是否是我的代码中的错误,或者我需要实现一些功能来解决它。
我的代码与UICollectionView
:
我已实施此协议:UICollectionViewDataSource
,UICollectionViewDelegate
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// get a reference to our storyboard cell
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
//call to the presenter to call API
}
另外,我需要观察者在加载屏幕时选择第一项:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if let observedObject = object as? UICollectionView, observedObject == collectionView {
DispatchQueue.main.async(execute: {
self.collectionView.selectItem(at: IndexPath(item: 0, section: 0), animated: true, scrollPosition: UICollectionViewScrollPosition.bottom)
self.collectionView(self.collectionView, didSelectItemAt: IndexPath(item: 0, section: 0))
})
}
}