【发布时间】:2018-02-12 19:35:37
【问题描述】:
我在许多部分的表视图中都有集合视图(在 复数 中)。我们很清楚,一个包含许多部分的单个表视图,其中只有一行,每一行都是一个单独的集合视图。
所有设置都运行良好,数据被很好地划分,代表们都已连接好,可以识别他们需要识别的所有内容。我的问题既简单又困难:每当我需要以动画方式查找特定单元格时,我想滚动到特定集合视图的位置。
到目前为止,我可以毫无问题地跳转到表格部分 (indexPath.section) 和集合项 (indexPath.row)。当我需要(同时)滚动动画时,就会出现问题。
到目前为止我的发现
我只能实现我当前的目标,即为
UITableView停用滚动动画(UICollectionView有/没有它都可以很好地执行)每当我将
UITableViewselectRow 或 scrollToRow 动画标志设置为 true 时,应用程序就会崩溃(99% 肯定会发生这种情况因为我正在尝试访问并且由于动画尚未显示而“不可见”部分)。
代码的相关sn-ps
@IBOutlet weak var albumTableView: UITableView!
@IBOutlet weak var stickersCollectionView: UICollectionView!
func locateCell() {
...
let stickerIndex = methodThatReturnsExactIndex()
let sectionIndex = IndexPath(row: 0, section: stickerIndex.section)
albumTableView.selectRow(at: sectionIndex, animated: false, scrollPosition: .top)
let rowIndex = IndexPath(item: stickerIndex.row, section: 0)
stickersCollectionView.scrollToItem(at: rowIndex, at: 0, animated: true)
}
我正在考虑使用 UIScrollViewDelegate 进行实验(检测 tableview 和 collectionview 何时停止以执行滚动)但这意味着传播全局变量围绕代码并体验艰难的我,这只是等待发生的赛车条件。任何帮助将不胜感激。
【问题讨论】:
-
如果 m 没有错,您首先希望通过垂直滚动来动画到 tableView 的该部分,然后水平滚动到特定时刻。所有这些动画都应该发生在一个事件上。例如到达一些推送通知。
标签: ios swift uitableview animation uicollectionview