Ios 使用第二个UIViewController启动ViewPagerController
我有一个viewpagercontroller,它使用3个预设的UIViewController正确运行,但是当我加载应用程序时,它首先显示第一个UIViewController,我希望先显示第二个UIViewController,但是我在实现这一点时遇到了困难 这是我的ViewDidLoad() 这是我订购的视图控制器Ios 使用第二个UIViewController启动ViewPagerController,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我有一个viewpagercontroller,它使用3个预设的UIViewController正确运行,但是当我加载应用程序时,它首先显示第一个UIViewController,我希望先显示第二个UIViewController,但是我在实现这一点时遇到了困难 这是我的ViewDidLoad() 这是我订购的视图控制器 private(set) lazy var orderedViewControllers: [UIViewController] = { return [self.ne
private(set) lazy var orderedViewControllers: [UIViewController] = {
return [self.newProfileViewController(vc: "UserContentViewController"),
self.newProfileViewController(vc: "ProfileViewController"),
self.newProfileViewController(vc: "NotificationViewController")]
}()
您可以使用所需的索引执行此函数
func scrollToViewController(index newIndex: Int) {
if let firstViewController = viewControllers?.first,
let currentIndex = orderedViewControllers.indexOf(firstViewController) {
let direction: UIPageViewControllerNavigationDirection = newIndex >= currentIndex ? .Forward : .Reverse
let nextViewController = orderedViewControllers[newIndex]
scrollToViewController(nextViewController, direction: direction)
}
}
您只需更改设置ViewController的第一位代码: 因此,改变这一点:
if let firstViewController = orderedViewControllers.first {
setViewControllers([firstViewController],
direction: .forward,
animated: true,
completion: nil)
}
为此:
if orderedViewControllers.count > 0 {
let secondViewController = orderedViewControllers[1]
setViewControllers([secondViewController],
direction: .forward,
animated: false,
completion: nil)
}
这将直接将页面视图控制器设置为第二个视图控制器,然后页面视图控制器上的代理方法应在加载正确的视图控制器之前和之后处理刷卡操作。我认为他们不希望它像这样滚动,这将明显地动画化到第二个vc。我想他们只是想把它加载到第二个视图控制器上。
if orderedViewControllers.count > 0 {
let secondViewController = orderedViewControllers[1]
setViewControllers([secondViewController],
direction: .forward,
animated: false,
completion: nil)
}