Ios 集合视图';在tvOS中重新加载数据后,上一个聚焦索引路径丢失

Ios 集合视图';在tvOS中重新加载数据后,上一个聚焦索引路径丢失,ios,uicollectionview,uikit,tvos,Ios,Uicollectionview,Uikit,Tvos,在我的tvOS应用程序中,我有一个集合视图,其中我已将其remembersLastFocusedIndexPath设置为true。由于这还不足以获得这种行为,我还重写了我的UIViewController中的一个方法,如下所示: override weak var preferredFocusedView: UIView? { return collectionView } 在我出于某些原因开始重新加载集合视图之前,这一切都很正常。如果集合视图可见,我调用collectionView.

在我的tvOS应用程序中,我有一个集合视图,其中我已将其
remembersLastFocusedIndexPath
设置为
true
。由于这还不足以获得这种行为,我还重写了我的
UIViewController
中的一个方法,如下所示:

override weak var preferredFocusedView: UIView? {
    return collectionView
}
在我出于某些原因开始重新加载集合视图之前,这一切都很正常。如果集合视图可见,我调用
collectionView.reloadData()
,它就可以工作

如果我在集合视图不可见的情况下重新加载,例如,在点击其中一个项目后,我处于详细视图中,那么这将不起作用。当我回到网格时,聚焦索引路径不是我点击的路径

作为一种解决方法,我正在管理这个非理想的场景:

  • 由于重新加载是由来自后端的新数据触发的,因此我只在集合视图可见时调用
    collectionView.reloadData()
  • 我在
    viewdide(动画:Bool)
    中调用
    collectionView.reloadData()

  • 我怎样才能正确地做到这一点?提前谢谢。

    最近我也收到了这个问题,我的情况和你差不多

    我还在
    viewDidLoad
    中调用了
    collectionView.reloadData()

    然后

    我从

    collectionView.reloadData()
    


    它在大多数情况下对我有效,还有一个选项是将
    remembersLastFocusedIndexPath
    设置为
    false
    ,并实现
    indexpathForPreferredFocusedVieeWinCollectionView:
    以实现相同的行为。

    您能将最后一个索引路径保存在您控制的另一个变量(即int)中吗?有没有委托方法可以用来更新变量?嗨,Breek。不错,我得自己试试。我最后做的是在ViewDidDisplay中重新加载集合视图,然后,当我收到新数据(定期)或当应用程序处于活动状态时,我仅在视图控制器可见时重新加载集合视图。这是可怕的东西,但到目前为止似乎有效。有趣。在这里,我应该以某种方式保存聚焦视图的索引路径,对吗?是的,使用属性保存当前聚焦的索引路径,并在collectionView:DidUpdateFocusInText:withAnimationCoordinator:
    collectionView.reloadItemsAtIndexPaths(collectionView.indexPathsForVisibleItems())