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