gpt4 book ai didi

ios - 如何使用 UIPageViewController

转载 作者:行者123 更新时间:2023-11-29 01:29:49 27 4
gpt4 key购买 nike

View of my viewController

首选 Swift 语言。

我希望 UIPageViewController 中包含三个 viewController(查看图像)。我不知道如何将三个 viewControllers 正确地实现到 UIPageViewController 中,在我发布这个问题之前,我在论坛上四处寻找类似的问题,但我没有找到任何问题。

在白色的 viewController 上,我已经将其他 viewController 连接到它上面,我基本上只想要像“Youtube”和“SnapChat”一样的滑动导航。

我是 Xcode 的新手,如果可能的话,请详细解释一下,以便我理解它的概念。(我已经在 Apple 的网站上阅读了关于 UIPageViewController 的内容。)

首选 Swift 语言。感谢您的帮助。

最佳答案

您可以通过多种方式使用它。这就是我喜欢的方式。

class PagingController: UIViewController, UIPageViewControllerDataSource {

let pageController:UIPageViewController

//Initializing PageController
required init(coder aDecoder: NSCoder) {
pageController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil)
super.init(coder: aDecoder)
}

override func viewDidLoad() {
super.viewDidLoad()
//Assingning the protocol inplemetation
pageController.dataSource = self
//Adding the view
if let initialViewController = viewControllerAtIndex(0) {
pageController.setViewControllers([initialViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated:false, completion: nil)
addChildViewController(pageController)
view .addSubview(self.pageController.view)
pageController.didMoveToParentViewController(self)
}
}


//Adding the next view controller
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
let currentDay = ((viewController as! UINavigationController).viewControllers[0] as! DietDayTableViewController).currentDay
let nextDay = (currentDay + 1) % 7

return viewControllerAtIndex(nextDay)
}


//Adding the previous view controller
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
let currentDay = ((viewController as! UINavigationController).viewControllers[0] as! DietDayTableViewController).currentDay

let previousDay = ((currentDay - 1) + 7) % 7

return viewControllerAtIndex(previousDay)
}


//A function witch gives me the right view controller for each page
func viewControllerAtIndex(index:Int) -> UINavigationController?{
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let vc = storyboard.instantiateViewControllerWithIdentifier("DietDayTableViewController") as? DietDayTableViewController {
vc.currentDay = index
return UINavigationController(rootViewController: vc)
}

return nil
}
}

我添加评论以寻求帮助。该 pageController 适用于一周中的几天。每个页面都是一天,我为每个页面使用相同的 viewController 。 pageviewcontroller 的概念是你已经分配了前一个 View Controller 和当前 View Controller 的下一个。

关于ios - 如何使用 UIPageViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33564949/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com