如何通过 UIButton Swift 4.0 更改 UIPageViewController VC?

How to change UIPageViewController VCs by UIButton Swift 4.0?

我有 UIPageViewController 和 3 个 UIViewController("FirstVC"、"SecondVC"、"ThirdVC")。 ViewControllers 通过滚动更改,但我需要通过单击 UIButtons 来更改它。

我该怎么做?

也许有些功能,其中 VC 将由 StoryboardID 设置?

谢谢大家的回答!

有几种方法。您可以在 Storyboard 文件中添加一个 segue 并调用

performSegue(withIdentifier: "toResponseTime", sender: self)

否则你可以做类似的事情。

    let controller = self.storyboard!.instantiateViewController(withIdentifier: "AngelDetailViewController") as! AngelDetailViewController

    self.navigationController!.pushViewController(controller, animated: true)

您可以使用以下方法轻松地以编程方式浏览 UIPageViewController 的页面:

setViewControllers([targetPage], direction: .forward, animated: true, completion: nil)

如果您在 ContainerView 中嵌入了 UIPageViewController ,并且您希望 "root" 视图中的按钮控制页面视图控制器,基本流程为:

  • 向您的页面视图控制器添加导航方法(功能)class
  • 加载时保存对页面视图控制器的引用 have
  • 您的按钮使用该引用调用导航函数

当您的 "root" 视图控制器加载并实例化嵌入在您的 ContainerView 中的视图控制器时,它会调用 prepare(for segue:...) - 这是您获取引用的地方。

在 Storyboard 中,您将视图控制器嵌入到 ContainerView 中,您将看到一个标准的 "segue" 连接。在 Attributes Inspector 中,给那个 segue 一个标识符,比如 "PageControllerEmbedSegue".

在您的根控制器 class 中,添加一个 class 级别的变量:

var myPageVC: BasicPageViewController?

prepare()中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    // get a reference to the embedded PageViewController on load
    if let vc = segue.destination as? BasicPageViewController,
        segue.identifier == "PageControllerEmbedSegue" {
        self.myPageVC = vc
    }

}

现在,您可以调用函数/获取嵌入式视图控制器的属性。

我在 GitHub 上有一个完整的例子:https://github.com/DonMag/EmbeddedPageView