UICollectionView не обновляет ячейку во время разбивки на страницы - PullRequest
0 голосов
/ 25 октября 2018

У меня есть UICollectionView с включенной горизонтальной подкачкой, каждая ячейка заполняет весь экран и содержит одну ImageView.

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

, поэтому я переопределил следующие методы:

public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        let pageWidth = collectionView.frame.size.width
        var currentPage = collectionView.contentOffset.x / pageWidth
        if (0.0 != fmodf(Float(currentPage), 1.0)) {
            currentPage += 1
        }

        let indexPath = IndexPath(row: Int(currentPage), section: 0)
        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as? MyCell else {
            return
        }

        // This cell is moving out of screen
        cell.image.isHidden = true

    }

и

public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        let pageWidth = collectionView.frame.size.width
        var currentPage = collectionView.contentOffset.x / pageWidth
        if (0.0 != fmodf(Float(currentPage), 1.0)) {
            currentPage += 1
        }

        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: IndexPath(row: Int(currentPage), section: 0)) as? MyCell else {
            return
        }
        // This cell entered the screen
        cell.image.isHidden = false
    }

проблема заключается в том, что ни одно из изменений в скрытом состоянии изображения не вступит в силу, если я напечатаю cell.image.isHidden, оно показывает правильное состояние, но пользовательский интерфейс не обновляется.

1 Ответ

0 голосов
/ 25 октября 2018

Заменить каждые

guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as? MyCell else {
        return
}

на

guard let cell = collectionView.cellForItem(at:indexPath) as? MyCell else {
        return
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...