首页 > 解决方案 > 我的应用程序启动时如何显示集合视图的中间单元格

问题描述

我在 ViewController 的子视图中嵌入了一个 collectionView。collectionView 有 12 个单元格。每个单元格占据了集合视图的整个宽度和高度,这样我就可以实现分页效果。但是,当应用程序启动时,我想显示中间单元格,例如我的 collectionView 的第 6 个或第 7 个单元格。

PS我在包装视图中有collectionView,而不是在我的viewController中。

在我的 WrapperView 中,我添加了以下方法,但由于在添加 collectionView 后调用了此方法,因此显示了突然跳转。

override func didAddSubview(_ subview: UIView) {
        super.didAddSubview(subview)
        let indexPath = IndexPath(row: 6, section: 0)
        DispatchQueue.main.async {
             self.calendarCollectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: false)
         }
}

如果我能在集合视图出现在屏幕上之前做到这一点,我也许可以解决这个问题,但我找不到didAddSubview(_:)在 UIView 生命周期中的方法之前调用哪个方法。

谁能给我提示如何解决这个问题。

标签: swiftuicollectionviewuicollectionviewcell

解决方案


加载数据源后,请使用:

func selectItem(at indexPath: IndexPath?, 
   animated: Bool, 
   scrollPosition: UICollectionView.ScrollPosition)

https://developer.apple.com/documentation/uikit/uicollectionview/1618057-selectitem

可能最好在视图出现之前使用,因此触发viewWillAppearviewDidLoad


推荐阅读