【问题标题】:swift iCarousel is not loading in the correct orderswift iCarousel 未按正确顺序加载
【发布时间】:2021-05-19 14:54:21
【问题描述】:

我已经在我的应用程序中集成了轮播库,当页面启动时我会在收到响应后点击一个 API 我会重新加载轮播

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

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索引这样的顺序,我不确定它是否与设置有关,我希望轮播应该按升序加载

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

谢谢

【问题讨论】:

  • 现在有 Swift 版本的 iCarousel 吗?
  • 就像表格或集合视图数据源一样,请求项目的顺序无关紧要。您的代码有责任返回所要求的任何内容。
  • 是否可以添加一些更相关的代码,很容易解决你的问题
  • @DuncanC 不,它是一个 Objective-C 库,但我们正在我们的 swift 项目中使用它
  • @Paulw11 用于初始加载它的加载单元格,当我们以正确的顺序滚动单元格时,它的加载单元格类似于 0,3,2,1 顺序

标签: ios swift iphone xcode icarousel


【解决方案1】:

正如 Paul 在他的评论中所说,请求单元格的顺序没有定义。您不应该对请求单元格的顺序做出任何假设,并且应该简单地提供任何请求的单元格,即使它被重复请求。 iCarousel 以及 Apple UITableView 和 UICollectionView 类都是如此。

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

重要的是单元格在屏幕上的显示顺序。如果将数字标签添加到单元格中,您会发现它们以索引顺序显示。 (iCarousel 有很多不同的单元格布局,“索引顺序”的定义因布局而异。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多