我是swift的新手,当我第一次加载到页面时,我正试图将某个单元格集中在水平可滚动的UICollectionView中。该页面横向约4个单元格。现在我正在尝试:
collectionView.scrollToItem(IndexPath(row: 3, section: 0), at: .left, animated: true)
viewDidLoad
中的,以便在点击页面时聚焦第四个单元格。如果集合视图中至少有7个项目,这将正常工作,因为第四个单元格将在左侧,但如果没有,它将最终聚焦于前3个项目之一,因为您无法滚动过去第四项足够,以便第四项在左边。我如何确保第四项不仅滚动到了,而且还明确地聚焦了?
我也尝试使用func indexPathForPreferredFocusedView(in collectionView: UICollectionView) -> IndexPath?
,这似乎使其工作,但问题是我不希望第四项始终关注,只在第一次加载此特定页面时。我也在应用程序的其他地方使用此集合视图,我不希望这种手动焦点。
我尝试使用该索引路径上的单元格覆盖preferredFocusEnvironments
但由于某种原因,collectionView.cellForItem(at: IndexPath(row: 3, section: 0))
始终返回nil。
似乎聚焦索引路径似乎是唯一可行的但我无法弄清楚如何在不覆盖indexPathForPreferredFocusedView
的情况下手动聚焦索引路径。有什么建议?谢谢!
答案 0 :(得分:1)
你可以尝试将细胞集中在这个功能中 func indexPathForPreferredFocusedView(在collectionView:UICollectionView中) - > IndexPath?
答案 1 :(得分:0)
在viewDidAppear中 collectionView.reloadData()
并使用函数indexPathForPreferredFocusedView
override func indexPathForPreferredFocusedView(in collectionView: UICollectionView) -> IndexPath? {
IndexPath(row:XX, section: 0)
}