Как автоматически прокрутить UICollectionView внутри UITableView с помощью таймера? - PullRequest
0 голосов
/ 29 марта 2019

Я хочу, чтобы мои баннеры в приложении автоматически прокручивались с использованием таймера. Я могу выполнить прокрутку, если представление коллекции является одним, но я не знаю, как выполнить это, когда мое представление коллекции находится внутри представления таблицы.

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 голосов
/ 29 марта 2019

Я достиг своей цели, создав функцию, а затем вызвав ее на 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

Я поставил галочку, чтобы не вызывать ее снова и снова.

0 голосов
/ 29 марта 2019

Таймер только инициализирован, пока не используется.Чтобы начать процесс, вам нужно добавить: -

t.fire()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...