如何使用计时器自动滚动UITableView内的UICollectionView?

时间:2019-03-28 22:36:56

标签: ios swift xcode uitableview uicollectionview

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

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内使用此代码,但似乎不起作用。

2 个答案:

答案 0 :(得分:0)

计时器现在才初始化,尚未使用。要开始此过程,您需要添加:-

t.fire()

答案 1 :(得分:0)

我已经实现了我的目标,方法是创建一个函数,然后在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

我放了一个复选标记,这样我就不会一遍又一遍地叫它了。