使用我的视图控制器 swift 4 中的按钮使用 UIPageViewController 更改页面

Posted

技术标签:

【中文标题】使用我的视图控制器 swift 4 中的按钮使用 UIPageViewController 更改页面【英文标题】:Change pages with UIPageViewController using buttons in my View Controllers swift 4 【发布时间】: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]

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

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

以上是关于使用我的视图控制器 swift 4 中的按钮使用 UIPageViewController 更改页面的主要内容,如果未能解决你的问题,请参考以下文章

使用swift在选项卡式视图中的导航栏上添加按钮

如何在swift 4中将表格视图控制器前面的按钮带到? [重复]

单击自定义 TableViewCell Swift 4 中的按钮时如何呈现单独的视图控制器?

在一个视图控制器中使用不同的按钮上传多个图像(iOS、Xcode 9、Swift 4)

如何在swift 4中将按钮放在表格视图控制器的前面? [复制]

使用 swift3 为 xib 文件中的按钮提供操作