swift iCarousel没有按照正确的顺序加载



我已经在我的应用程序中集成了carousel库,当页面启动时,我将在获得响应后点击一个API,我将重新加载carousel

这里的carousel委托方法没有按正确的顺序调用

func numberOfItems(in carousel: iCarousel) -> Int {
return 100
}
func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView {
print("carousel viewForItemAt index:  (index)")
let view = Bundle.main.loadNibNamed("StatusCarouselCell", owner: self, options: nil)![0] as! StatusCarouselCell
return view
}

结果:

carousel viewForItemAt index: 0
carousel viewForItemAt index: 3
carousel viewForItemAt index: 2
carousel viewForItemAt index: 1

加载的顺序是0,3,2,1索引,我不确定这是否与设置有关,我想让旋转木马按升序加载

谁能建议一个方法来解决这个问题?

感谢

正如Paul在他的评论中所说,请求单元格的顺序没有定义。您不应该对请求单元的顺序做任何假设,而应该简单地提供所请求的单元,即使是重复请求的单元。iCarousel也是如此,苹果的UITableView和UICollectionView类也是如此。

你说"…例如,tableView会加载indexpath。Row = 0,1,2,3,4…这是正确的顺序……这是一个错误的假设。如果,明天,您的表视图开始以row =[3, 0, 1, 4, 2]的顺序请求单元格,这将是完全有效的,并且在表视图的可接受行为范围内。如果您编写的程序依赖于按特定顺序请求的单元,那么您的程序是脆弱的,并且依赖于未得到保证的框架的未记录行为。

重要的是单元格在屏幕上显示的顺序。如果向单元格添加数字标签,您会发现它们是按索引顺序显示的。(iCarousel有很多不同的单元格布局,以及"索引顺序"的定义;不同的布局不同)