在我的tvOS应用程序中,我有一个集合视图,我将其remembersLastFocusedindexPath设置为true.由于这还不足以得到这种行为,我还在我的UIViewController中重写了一个方法,如下所示:
override weak var preferredFocusedView: UIView? { return collectionView }
这工作正常,直到我开始重新加载集合视图出于某些原因.如果作为集合视图可见,我调用collectionView.reloadData(),它确实有效.
如果我在集合视图不可见时进行重新加载,例如,当我在点击其中一个项目后进入详细视图时,这不起作用.当我回到网格时,聚焦的索引路径不是我点击的路径.
作为一种解决方法,我正在管理这种非理想情况:
>由于来自我的后端的新数据触发了重新加载,我只在集合视图可见时调用collectionView.reloadData()(因为我知道最后一个聚焦索引在这里没有改变).
>我在viewDidAppear(动画:Bool)中调用collectionView.reloadData()以在用户返回时获得最新内容.
我该怎么做呢?提前致谢.
解决方法
最近我也遇到了这个问题,我的情况对你来说几乎是一样的.
我还在viewDidLoad和viewWillAppear中调用了collectionView.reloadData()
然后
我改变了
collectionView.reloadData()
至
collectionView.reloadItemsAtIndexPaths(collectionView.indexPathsForVisibleItems())
它大部分时间都适用于我,仍然有大约<5%的机会搞乱最后的焦点指数
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。