swift - 我的应用程序启动时如何显示集合视图的中间单元格
问题描述
我在 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 生命周期中的方法之前调用哪个方法。
谁能给我提示如何解决这个问题。
解决方案
加载数据源后,请使用:
func selectItem(at indexPath: IndexPath?,
animated: Bool,
scrollPosition: UICollectionView.ScrollPosition)
https://developer.apple.com/documentation/uikit/uicollectionview/1618057-selectitem
可能最好在视图出现之前使用,因此触发viewWillAppear
或viewDidLoad
推荐阅读
- typescript - 从泛型函数推断真实类型
- mysql - 在 phpmyadmin 的 mysql 数据库中添加复合键时出错
- excel - Excel VBA将范围的行合并到二维数组中
- python - 为什么我们在每次回溯迭代结束时从列表中弹出?
- liquid - 如何在没有实体形式的门户中使用液体脚本在 CRM 中创建记录
- excel - Excel为每个类别绘制一条线
- html - 为什么块和内联元素边框折叠?
- python - 如何从 tkinter 的输入框中打印值?
- deep-learning - 我们如何微调 HuggingFace Transformer-XL 模型以用于文本生成和机器翻译?
- flutter - 颤振,原生 Admob,广告无法加载:0