在我的 tvOS 应用程序中,我有一个 Collection View ,我已将其 remembersLastFocusedIndexPath
设置为 true
。由于这不足以实现此行为,我还在 UIViewController
中覆盖了一个方法,如下所示:
override weak var preferredFocusedView: UIView? {
return collectionView
}
在我出于某些原因开始重新加载 Collection View 之前,这一切都很好。如果 Collection View 可见,我调用 collectionView.reloadData()
,它确实有效。
但是,如果我在 Collection View 不可见时重新加载,例如,当我在点击其中一项后处于详细 View 中时,这是行不通的。当我回到网格时,聚焦的索引路径不是我点击的路径。
作为一种解决方法,我正在处理这种不理想的情况:
- 由于重新加载是由来 self 的后端的新数据触发的,所以我只在 Collection View 可见时调用
collectionView.reloadData()
(因为我知道最后一个聚焦的索引不会改变在这里)。 - 我在
viewDidAppear(animated: Bool)
中调用collectionView.reloadData()
以在用户返回时获得最新内容。
我怎样才能正确地做到这一点?提前致谢。
最佳答案
最近我也遇到了这个问题,我的情况和你差不多。
我还在 viewDidLoad
和 viewWillAppear
中调用了 collectionView.reloadData()
然后
我从
collectionView.reloadData()
到
collectionView.reloadItemsAtIndexPaths(collectionView.indexPathsForVisibleItems())
它大部分时间对我有用,仍然有大约 <5% 的机会弄乱最后的焦点索引
关于ios - 在 tvOS 中重新加载数据后, Collection View 的最后一个聚焦索引路径丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082981/