在我的自定义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
或先后依次调用YES
和selectItemAtIndexPath:animated:scrollPosition:()
,但是似乎没有任何作用。
如果您想查看代码:这是我的自定义控制器中执行滚动/选择的方法。该方法由deselectItemAtIndexPath:()
对象调用,该对象引用要选择的单元格。
selectItemAtIndexPath:animated:scrollPosition:()