我有UIPageViewController和3个UIViewControllers(" FirstVC"," SecondVC"," ThirdVC")。 ViewControllers通过滚动进行更改,但我需要通过单击UIButtons来更改它。
我怎么能这样做?
也许有些func,其中VC将由StoryboardID设置?
感谢所有答案!
答案 0 :(得分:1)
您可以使用:
轻松地以编程方式浏览UIPageViewController
的页面
setViewControllers([targetPage], direction: .forward, animated: true, completion: nil)
如果您在ContainerView中有UIPageViewController
嵌入,并且您想要" root"中的按钮。视图控制页面视图控制器,基本过程是:
当你的" 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)