【问题标题】:How to auto scroll a UICollectionView inside a UITableView using Timer?如何使用 Timer 在 UITableView 内自动滚动 UICollectionView?
【发布时间】:2019-03-28 22:36:55
【问题描述】:

我希望我的应用程序中的横幅使用计时器自动滚动。如果集合视图是单独的,我可以执行滚动,但是当我的集合视图位于 tableview 中时,我不知道如何执行。

var r = 0
let t = Timer.init(timeInterval: 2, repeats: true) { (timer) in
    let index = IndexPath(item: r, section: 0)
    cell.cltView.scrollToItem(at: index, at: .left, animated: true)
    if r == 6 {
       r = 0
    }else {
       r = r+1
    }
}

我在 cellForRowAt indexPath 中使用此代码,但它似乎不起作用。

【问题讨论】:

    标签: ios swift xcode uitableview uicollectionview


    【解决方案1】:

    定时器现在只是初始化了,还没有使用。要开始该过程,您需要添加:-

    t.fire()
    

    【讨论】:

    • 我有,但它不工作我只是想知道我应该把这段代码放在哪里。我试过 cellForRowAt 和 cellForItemAt 他们都不起作用
    【解决方案2】:

    我通过创建一个函数然后在 cellForItemAt 上调用它来实现我的目标 它解决了我的问题。

    func scrollCollection(cltView: UICollectionView) {
        var r = 0
    
        let t = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { (timer) in
            print(r)
            let index = IndexPath(item: r, section: 0)
            cltView.scrollToItem(at: index, at: .left, animated: true)
            if r == 6 {
                r = 0
            }else {
                r = r+1
            }
        }
        t.fire()
    
    }
    

    这是我使用的函数,我刚刚调用了它

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
    
    let mainImg = cell.viewWithTag(20) as! UIImageView
    
    mainImg.image = UIImage(named: banners[indexPath.item])
    if op {
        scrollCollection(cltView: collectionView)
        op = false
    }
    
    return cell
    

    我放了一个检查标记,这样我就不会一次又一次地调用它。

    【讨论】:

    • 我们可以无限滚动吗?因为使用上面的代码它正在滚动,但在到达最后一个索引后它正在移动到第一个索引(这里集合视图滚动到第一个索引)。
    猜你喜欢
    • 2019-09-28
    • 2020-09-17
    • 2016-05-29
    • 1970-01-01
    • 2012-12-27
    • 2018-11-02
    • 2012-08-22
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多