Ios 实现UIPageViewController';s逻辑作为Swift中UIViewController的子视图
我必须将UIPageViewController实现为UIViewController的子视图。UIPageViewController内部有一些逻辑和其他ViewController。我的问题是如何连接下面这两段代码 这是我的主要UIViewController代码:Ios 实现UIPageViewController';s逻辑作为Swift中UIViewController的子视图,ios,swift,uiviewcontroller,uipageviewcontroller,subview,Ios,Swift,Uiviewcontroller,Uipageviewcontroller,Subview,我必须将UIPageViewController实现为UIViewController的子视图。UIPageViewController内部有一些逻辑和其他ViewController。我的问题是如何连接下面这两段代码 这是我的主要UIViewController代码: class MyMainViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() }
class MyMainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
还有我的UIPageViewController代码,它在他包含的ViewController之间实现了一个无休止的循环(我复制了整个代码,可能没有必要):
在布局
MyMainViewController
和TutorialPageViewController
的情节提要中,需要将容器视图添加到MyMainViewController
,然后使用Embed
分段嵌入TutorialPageViewController
当显示MyMainViewController
时,它现在也会自动插入教程视图
class TutorialPageViewController: UIPageViewController {
private(set) lazy var orderedViewControllers: [UIViewController] = {
return [self.newColoredViewController("Green"),
self.newColoredViewController("Red"),
self.newColoredViewController("Blue")]
}()
override func viewDidLoad() {
super.viewDidLoad()
dataSource = self
if let firstViewController = orderedViewControllers.first {
setViewControllers([firstViewController],
direction: .Forward,
animated: true,
completion: nil)
}
}
private func newColoredViewController(color: String) -> UIViewController {
return UIStoryboard(name: "Main", bundle: nil) .
instantiateViewControllerWithIdentifier("\(color)ViewController")
}
}
extension TutorialPageViewController: UIPageViewControllerDataSource {
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else {
return nil
}
let previousIndex = viewControllerIndex - 1
guard previousIndex >= 0 else {
return orderedViewControllers.last
}
guard orderedViewControllers.count > previousIndex else {
return nil
}
return orderedViewControllers[previousIndex]
}
func pageViewController(pageViewController: UIPageViewController,
viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else {
return nil
}
let nextIndex = viewControllerIndex + 1
let orderedViewControllersCount = orderedViewControllers.count
guard orderedViewControllersCount != nextIndex else {
return orderedViewControllers.first
}
guard orderedViewControllersCount > nextIndex else {
return nil
}
return orderedViewControllers[nextIndex]
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return orderedViewControllers.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
guard let firstViewController = viewControllers?.first,
firstViewControllerIndex = orderedViewControllers.indexOf(firstViewController) else {
return 0
}
return firstViewControllerIndex
}
}