UICollectionViewCell.selected有时未设置为YES

时间:2019-01-09 14:35:58

标签: ios uicollectionview

在我的自定义Observable.just(rxBleConnection) .flatMap { rxBleConnection -> rxBleConnection.queue(CustomRefresh()) } .observeOn(Schedulers.io()) .doOnComplete{ switchToDFUmode() } .subscribe({ isSuccess -> // check }, { throwable -> Timber.d(throwable) }).also { refreshDisposable.add(it) } 中,我响应用户点击UI中的导航按钮而调用UICollectionViewController方法UICollectionView方法。当仍在查看要选择的单元格时,此选项始终可以正常工作,但在大多数情况下selectItemAtIndexPath:animated:scrollPosition:()需要滚动以使要选择的单元格可见时,大部分时间都无法正常工作。

“不起作用”的意思是:收集视图正确滚动到所需位置并显示该单元格,但是设置了UICollectionView的{​​{1}}属性反对selected

“大部分时间不工作”的意思是:在启动应用程序后的前1-2次调用该方法时,它通常可以正常工作,但是随后开始失败。

多次检查显示:

  • 现在已取消选择先前选择的单元格(其UICollectionViewCell属性为YES
  • 调用selected方法NO会返回一个带有单个UICollectionView对象的数组,该数组引用正确的单元格。

我的IDE是Xcode 10.1。我在运行iOS 12.1.2的真实设备(iPhone 6 Plus)上遇到此问题。当我在iOS 12.1、11.4和10.3.1下的模拟器中运行应用程序时,我也遇到了问题。我的测试仅限于iPhone x Plus和iPhone XS Max设备,因为我的应用仅在这些设备上使用indexPathsForSelectedItems。但是现在它变得有趣了:当我在iOS 9.3和iOS 8.4下的模拟器中运行应用程序时,问题消失了。

我的主要问题是:iOS 9和iOS 10之间是否发生了一些变化,从而影响了NSIndexPath的工作方式?我需要做一些其他事情才能使其正常工作?

我的第二个问题是:是否可以做一些事情来强制将UICollectionView属性设置为selectItemAtIndexPath:animated:scrollPosition:()?我尝试过直接设置属性,但这没有效果。我也尝试过第二次调用selected或先后依次调用YESselectItemAtIndexPath:animated:scrollPosition:(),但是似乎没有任何作用。

如果您想查看代码:这是我的自定义控制器中执行滚动/选择的方法。该方法由deselectItemAtIndexPath:()对象调用,该对象引用要选择的单元格。

selectItemAtIndexPath:animated:scrollPosition:()

0 个答案:

没有答案