如何修改UIPageViewController的初始显示视图控制器
解决UIPageViewController初始显示中间视图控制器的问题
嘿,很高兴帮你搞定这个小问题!你现在的代码里,viewDidLoad中是取viewControllerList.first来设置初始页面,这就是为什么默认显示vc1的原因。要让vc2作为初始页面,只需要把这部分代码改成直接获取数组里的第二个元素(数组索引从0开始,所以vc2的索引是1)就可以了。
修改后的关键代码
把viewDidLoad里的这段:
if let firstViewController = viewControllerList.first{ self.setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil) }
替换成:
// 直接取索引为1的vc2作为初始页面,添加数组长度判断避免越界 if viewControllerList.count >= 2 { self.setViewControllers([viewControllerList[1]], direction: .forward, animated: true, completion: nil) }
为什么这样可行?
你的viewControllerList数组顺序是[vc1, vc2, vc3],vc2正好在索引1的位置。而你已经正确实现了UIPageViewControllerDataSource的前后页面逻辑,所以设置vc2为初始页面后,左右滑动依然能正常切换到vc1和vc3,完全符合你要的顺序要求。
完整修改后的viewDidLoad方法
override func viewDidLoad() { super.viewDidLoad() //if Auth.auth().currentUser?.uid == nil{ //logout() //}else{ self.dataSource = self // 修改这里,设置vc2为初始页面 if viewControllerList.count >= 2 { self.setViewControllers([viewControllerList[1]], direction: .forward, animated: true, completion: nil) } //} }
这样修改后,你的RootPageViewController启动时就会直接显示vc2,同时保持横向滚动和页面导航的正常功能啦!
内容的提问来源于stack exchange,提问作者A. Albert
相关产品推荐
相关产品推荐

