如何通过 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
我有 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