You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新UIPageViewController的VC数量后页面指示器未同步更新

问题

我有一个实现UIPageViewController、UIPageViewControllerDelegate、UIPageViewControllerDataSource协议的类。应用启动时包含3个VC,底部页面指示器显示3个点,选中的VC对应实心点(O o o,其中O为实心,o为空心)。之后我向分页列表中添加了一个新VC,调用setViewControllers方法后,presentationCount方法触发并返回新的数量。奇怪的是,我可以在包括新VC在内的所有VC间滑动切换,但底部页面指示器仍显示3个点(o o O)。当我点击页面指示器区域(并非切换页面,仅点击中间区域),指示器展开并显示全部4个点(o o O o)。整个功能运行正常,但页面指示器未自动更新,请问需要调用什么方法来更新底部的页面指示器?

解决方案

  • 调用setNeedsLayout():在添加新VC并执行完setViewControllers后,直接对UIPageViewController的视图调用这个方法,它会触发页面重新布局,页面指示器会自动读取presentationCount返回的新数值更新显示。
  • 重置数据源:先把UIPageViewController的dataSource设为nil,再重新赋值回当前类实例,这样会强制触发presentationCount和presentationIndex的回调,让指示器更新。
  • 直接修改UIPageControl属性:遍历UIPageViewController的子视图找到UIPageControl实例,手动设置它的numberOfPages为新的页面总数,代码示例:
if let pageControl = self.view.subviews.first(where: { $0 is UIPageControl }) as? UIPageControl {
    pageControl.numberOfPages = 4 // 替换成你的实际页面数量
}

内容的提问来源于stack exchange,提问作者Michael O'Brien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:55:57