如何通过UIPageControl圆点直接跳转到指定Banner页面?
你当前的代码逻辑错误——你在点击事件里计算的是「当前页码+1」的下一页,而非用户点击的目标页码。UIPageControl在用户点击圆点时,sender.currentPage会自动更新为点击位置对应的页码,直接使用这个值即可实现精准跳转。
修正后的代码
pageControl.addTarget(self, action: #selector(pageControlTapped(sender:)), for: .touchUpInside) @objc func pageControlTapped(sender: UIPageControl) { // 直接取点击后自动更新的currentPage,就是目标Banner的索引 let targetPage = sender.currentPage let indexPath = IndexPath(row: targetPage, section: 0) self.collectionView.scrollToItem(at: indexPath, at: .left, animated: true) }
额外注意事项
- 必须保证
pageControl.numberOfPages和Banner条目总数(即CollectionView数据源的数量)完全一致,否则会出现索引越界或跳转错位的问题。 - 如果你的Banner做了无限滚动处理(比如数据源首尾添加重复条目),需要额外做页码与实际数据源索引的映射,避免跳转出错。
内容的提问来源于stack exchange,提问作者A. Mert Seyhan
相关产品推荐
相关产品推荐

