是否可以转至 UIPageViewController?
Is it possible to segue to a UIPageViewController?
我试图在用户登录后向我的应用程序添加一个教程部分。当应用程序加载时,他们将首先来到登录屏幕并输入他们的凭据。一旦他们通过验证,我想转至 UIPageViewController
并向他们展示两页有关如何使用该应用程序的说明。但是,我这样做的所有尝试都导致了黑屏。这是我目前的尝试:
import UIKit
class TutorialPageViewController: UIPageViewController {
var pages: [UIViewController] = []
override func viewDidLoad()
{
super.viewDidLoad()
self.dataSource = self
self.delegate = self
print("LOADING")
let firstView = storyboard?.instantiateViewController(withIdentifier: "TutorialPage1") as! TutorialPage1ViewController
let secondView = storyboard?.instantiateViewController(withIdentifier: "TutorialPage2") as! TutorialPage2ViewController
pages = [firstView, secondView]
let startingViewController = self.pages[0]
let viewControllers: [UIViewController] = [startingViewController]
self.setViewControllers(viewControllers, direction: UIPageViewControllerNavigationDirection.forward, animated: true, completion: {(done: Bool) in})
}
func viewControllerAtIndex(index:NSInteger) -> UIViewController {
return pages[index]
}
}
extension TutorialPageViewController: UIPageViewControllerDataSource
{
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
let previousIndex = viewControllerIndex - 1
guard previousIndex >= 0 else { return pages.last }
guard pages.count > previousIndex else { return nil }
return pages[previousIndex]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
let nextIndex = viewControllerIndex + 1
guard nextIndex < pages.count else { return pages.first }
guard pages.count > nextIndex else { return nil }
return pages[nextIndex]
}
}
extension TutorialPageViewController: UIPageViewControllerDelegate { }
我的 viewDidLoad
方法中的打印语句没有被调用,所以我不明白我做错了什么。我已经从登录视图控制器创建了一个到 TutorialPageViewController
的推送 segue,但是没有任何加载。
感谢任何帮助。
尝试检查下面的示例项目 GitHub 回购:
Link - https://github.com/RockinGarg/Stack_PageVC.git
包含两种不同的访问方式
1. Making use of Container View and PageVC as SubView
2. Using Segue
我试图在用户登录后向我的应用程序添加一个教程部分。当应用程序加载时,他们将首先来到登录屏幕并输入他们的凭据。一旦他们通过验证,我想转至 UIPageViewController
并向他们展示两页有关如何使用该应用程序的说明。但是,我这样做的所有尝试都导致了黑屏。这是我目前的尝试:
import UIKit
class TutorialPageViewController: UIPageViewController {
var pages: [UIViewController] = []
override func viewDidLoad()
{
super.viewDidLoad()
self.dataSource = self
self.delegate = self
print("LOADING")
let firstView = storyboard?.instantiateViewController(withIdentifier: "TutorialPage1") as! TutorialPage1ViewController
let secondView = storyboard?.instantiateViewController(withIdentifier: "TutorialPage2") as! TutorialPage2ViewController
pages = [firstView, secondView]
let startingViewController = self.pages[0]
let viewControllers: [UIViewController] = [startingViewController]
self.setViewControllers(viewControllers, direction: UIPageViewControllerNavigationDirection.forward, animated: true, completion: {(done: Bool) in})
}
func viewControllerAtIndex(index:NSInteger) -> UIViewController {
return pages[index]
}
}
extension TutorialPageViewController: UIPageViewControllerDataSource
{
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
let previousIndex = viewControllerIndex - 1
guard previousIndex >= 0 else { return pages.last }
guard pages.count > previousIndex else { return nil }
return pages[previousIndex]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
let nextIndex = viewControllerIndex + 1
guard nextIndex < pages.count else { return pages.first }
guard pages.count > nextIndex else { return nil }
return pages[nextIndex]
}
}
extension TutorialPageViewController: UIPageViewControllerDelegate { }
我的 viewDidLoad
方法中的打印语句没有被调用,所以我不明白我做错了什么。我已经从登录视图控制器创建了一个到 TutorialPageViewController
的推送 segue,但是没有任何加载。
感谢任何帮助。
尝试检查下面的示例项目 GitHub 回购:
Link - https://github.com/RockinGarg/Stack_PageVC.git
包含两种不同的访问方式
1. Making use of Container View and PageVC as SubView
2. Using Segue