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

时间:2018-02-14 12:17:10

标签: ios swift uiviewcontroller uibutton uipageviewcontroller

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

我怎么能这样做?

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

感谢所有答案!

2 个答案:

答案 0 :(得分:1)

您可以使用:

轻松地以编程方式浏览UIPageViewController的页面
setViewControllers([targetPage], direction: .forward, animated: true, completion: nil)

如果您在ContainerView中有UIPageViewController 嵌入,并且您想要" root"中的按钮。视图控制页面视图控制器,基本过程是:

  • 将导航方法(funcs)添加到页面视图控制器类
  • 在加载
  • 时保存对页面视图控制器的引用
  • 您的按钮使用该引用调用导航功能

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

在Storyboard中,您将视图控制器嵌入到ContainerView中,您将看到一个标准的" segue"连接。在Attributes Inspector中,为该segue指定一个标识符,例如" PageControllerEmbedSegue"。

在根控制器类中,添加一个类级别的var:

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
    }

}

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

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

答案 1 :(得分:0)

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

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

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

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

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