【问题标题】:Change pages with UIPageViewController using buttons in my View Controllers swift 4使用我的视图控制器 swift 4 中的按钮使用 UIPageViewController 更改页面
【发布时间】:2019-03-04 22:55:11
【问题描述】:

我有一个 UIPageViewController 可以让我在多个视图控制器之间导航。 我的应用程序可以滑动我的屏幕,但我想删除滑动手势以在视图中的不同按钮的页面之间导航 这是我在页面视图 cxontroller 上使用的代码

class RootPageViewController: UIPageViewController,UIPageViewControllerDataSource {

lazy var viewControllerList: [UIViewController] = {
    let storyBoard = UIStoryboard(name: "Main", bundle: nil)

    let VC1 = storyBoard.instantiateViewController(withIdentifier: "orangeVC")
    let VC2 = storyBoard.instantiateViewController(withIdentifier: "blueVC")
    let VC3 = storyBoard.instantiateViewController(withIdentifier: "purpleVC")

    return [VC1, VC2, VC3]
}()

override func viewDidLoad() {
    super.viewDidLoad()

    self.dataSource = self

    if let firstViewController = viewControllerList.first {
        self.setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil)            
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
    guard let vcIndex = viewControllerList.index(of: viewController) else {return nil}
    let previousIndex = vcIndex-1
    guard previousIndex >= 0 else {return nil}
    guard viewControllerList.count > previousIndex else {return nil}

    return viewControllerList[previousIndex]
}

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
    guard let vcIndex = viewControllerList.index(of: viewController) else {return nil}
    let nextIndex = vcIndex+1
    guard viewControllerList.count != nextIndex else {return nil}
    guard viewControllerList.count > nextIndex else {return nil}

    return viewControllerList[nextIndex]
}

}

【问题讨论】:

    标签: ios swift uipageviewcontroller


    【解决方案1】:

    您只需要在按钮操作中使用这一行

    self.setViewControllers([viewControllerList[indexHere]], direction: .forward, animated:false, completion: nil)            
    

    【讨论】:

    • 如何获取当前视图索引?
    • 在这里guard let vcIndex = viewControllerList.index(of: self.viewControllers.first!) else {return nil}你也可以保留一个计数器变量
    • 只是,我有问题,我不能在我的页面视图控制器上按按钮,所以我尝试在我的其他视图控制器之一上放置一个按钮。如何在另一个视图控制器上使用它,或者我可以在同一页面视图控制器代码的不同视图上添加按钮的操作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多