在我的tvOS应用中,我有一个集合视图,我将其> df <- data.frame(x1=runif(20,1,200),x2=runif(20,1,18),x3=runif(20,1,7),
+ x4=runif(20,1,3),x5=runif(20,1,25),x6=runif(20,1,220),
+ x7=runif(20,1,10),x8=runif(20,1,8),x9=runif(20,1,20),
+ x10=runif(20,1,32))
> df
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
1 144.616823 5.066181 6.577798 1.941608 19.250274 79.88517 3.487795 5.397938 19.226113 9.469675
2 143.563809 1.608130 6.446411 2.071802 12.636476 193.12108 5.685940 1.643825 11.111157 5.676330
3 124.396884 3.693522 3.660122 1.346020 21.605446 98.05443 1.965067 5.332797 7.879099 2.252806
4 75.936173 9.596695 1.130494 2.014904 19.460231 195.26396 1.132060 6.338672 4.077532 31.391598
5 8.913065 1.170144 3.197571 1.011599 3.970510 211.02147 6.483770 5.654871 12.669959 16.107771
6 177.159043 11.625298 6.282233 1.576242 13.997114 119.77652 9.507075 4.430359 13.564249 1.256496
7 70.383858 14.545778 2.018208 2.990232 3.391777 83.47019 2.232830 7.433207 1.809452 18.440641
8 48.883343 8.747942 4.473287 1.163179 13.949834 77.34972 3.959059 1.320038 10.385028 2.291721
9 85.618694 5.421825 4.675017 1.935956 10.877031 185.46998 7.548788 4.160425 16.304787 23.373557
10 152.615778 12.088414 2.154604 2.266516 20.823971 159.11784 7.047805 3.570086 18.286411 22.731629
11 83.139696 1.909547 3.124565 2.580109 4.726824 100.42819 1.994356 2.910579 2.034623 26.973796
12 85.488980 4.193826 2.051200 1.063903 18.012469 210.97311 5.783519 5.846847 9.931950 17.261856
13 172.446057 14.226508 3.080864 2.153755 6.844384 201.36755 1.593935 4.389736 10.549154 12.728925
14 23.892525 13.907691 2.494084 1.658334 11.922202 159.96523 1.605302 4.113502 7.151511 11.186883
15 24.836826 16.390015 2.989483 2.327674 17.067639 44.66071 5.275591 2.970786 6.068440 1.898431
16 84.552408 6.670091 3.059626 1.693665 6.243420 175.88141 9.638818 2.090328 17.085817 23.759445
17 29.615649 12.239127 5.728309 1.034658 3.793404 17.34458 2.211930 7.648141 13.080505 21.024933
18 106.492512 13.543715 3.244059 2.167515 21.803114 204.25419 7.807202 1.519835 1.117334 9.732187
19 156.503788 16.186274 4.825950 2.019083 6.594384 61.66293 9.693650 5.181686 10.884431 23.105221
20 196.592843 6.461601 4.183722 1.742368 21.129107 175.12238 9.239206 6.657412 8.371315 15.648119
> ind <- c(0.800, 1.000, 0.400, 0.010, 6.000, 0.100, 0.180, 0.006, 10.000, 1.000)
> ind
[1] 0.800 1.000 0.400 0.010 6.000 0.100 0.180 0.006 10.000 1.000
> sapply(df[,ind>=0.8], function(x){max(x)})
x1 x2 x5 x9 x10
196.59284 16.39002 21.80311 19.22611 31.39160
设置为remembersLastFocusedIndexPath
。由于这还不足以实现此行为,我还在我的true
中覆盖了一个方法,如下所示:
UIViewController
这很好用,直到我开始重新加载集合视图出于某些原因。如果作为集合视图可见,我会调用override weak var preferredFocusedView: UIView? {
return collectionView
}
。
如果我在收集视图不可见时进行重新加载,例如,当我点击其中一个项目后在详细视图中进行重新加载时,这不起作用。当我回到网格时,聚焦的索引路径不是我点击的路径。
作为一种解决方法,我正在管理这种非理想情况:
collectionView.reloadData()
(因为我知道最后一个聚焦索引在此处没有变化)。collectionView.reloadData()
中致电collectionView.reloadData()
,以便在用户回来时提供最新内容。我该如何正确地做到这一点?提前谢谢。
答案 0 :(得分:2)
最近我也遇到了这个问题,我的情况对你来说几乎是一样的。
我还在collectionView.reloadData()
和viewDidLoad
viewWillAppear
然后
我改变了
collectionView.reloadData()
到
collectionView.reloadItemsAtIndexPaths(collectionView.indexPathsForVisibleItems())
它大部分时间都适合我,仍然有大约<5%的机会搞乱最后一个焦点指数
答案 1 :(得分:1)
一种选择是将remembersLastFocusedIndexPath
设置为false
,并实施indexPathForPreferredFocusedViewInCollectionView:
以实现相同的行为。