Этот вопрос связан с этой структурой вопроса . Я поставил pageControl на tableView xib ниже коллекции View
В ячейке 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()