pageControl активная точка не менялась при пролистывании, но изменялась при нажатии на точку - PullRequest
0 голосов
/ 10 марта 2020

Этот вопрос связан с этой структурой вопроса . Я поставил pageControl на tableView xib ниже коллекции View enter image description here

В ячейке tableView я написал так:

class AccountTypeTableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIScrollViewDelegate, UIPageViewControllerDelegate {
weak var cellDelegate:CustomCollectionCellDelegate?
weak var myParent:AccountTypeViewController?
@IBOutlet weak var collectionAccountTypeView: UIView!
@IBOutlet weak var lblAccountTypeTitle: UILabel!
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var pageControl: UIPageControl!
@IBAction func pageControllerAction(_ sender: UIPageControl) {
    print("currentPage:\(sender.currentPage)")
    self.collectionView.scrollToItem(at: IndexPath(row: sender.currentPage, section: 0), at: .centeredHorizontally, animated: true)
}
func scrollViewDidScroll(_ scrollView: UIScrollView)
{
    let pageWidth = scrollView.frame.width
    let currentPages = Int((scrollView.contentOffset.x + pageWidth / 2) / pageWidth)
    print("scrollViewDidScroll-\(pageWidth)-\(currentPages)")
    self.pageControl.currentPage = currentPages
    print("current page\(pageControl.currentPage)-\(currentPages)")
}}

Когда я коснусь точки pageControl, он может автоматически прокрутиться к представлению коллекции назначения -> @IBAction fun c pageControllerAction (_ sender: UIPageControl)

Но когда я прокручиваю / смахиваю представление коллекции, активная точка pageControl не изменяется -> self.pageControl.currentPage = currentPages (не работает)

когда я регистрирую (печатаю) print ("scrollViewDidScroll- (pageWidth) - (currentPages)"), я правильно получаю currentPages.

Как сделать pageControl активным изменением точки после scrollViewDidEndDecelerating, потому что я пытался с scrollViewDidEndDecelerating, также не работает.

override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    let x = scrollView.contentOffset.x
    let w = scrollView.bounds.size.width
    AccountTypeTableViewCell.customCell.scrollViewDidScroll(scrollView)
}

проблема здесь, когда я регистрирую

print("current page\(pageControl.currentPage)-\(currentPages)")

результат currentPages правильный, но pageControl.currentPage всегда 0. Я не знал почему pageControl.currentPage не обновляется с помощью currentPages, даже если я добавлю

self.pageControl.updateCurrentPageDisplay()
...