一次滑动视图 ViewController

Swipe views in one ViewController

我想在我的 ViewController

中制作类似天循环的东西

所以,我得到了这个:image

我想在几天之间滑动视图。例如,向右滑动可在相同 ViewController.

中获取星期二

请问如何处理?提前致谢!

如果您想了解它的工作原理, 您可以搜索 UIPageControl, this method works for multiple UIViewController

我建议您在一个 UIViewController 中创建一个带有分页滚动的 UICollectionView

Here为范例,

或者如果你只是想做,你可以使用PageMenu

我不确定您是要将此视图构建为整个屏幕还是屏幕的一部分。然而,正如 ocanal 所说,使用 UIPageViewController 非常容易。

您所做的是,在故事板中绘制一个 UIPageViewController 并从 UIPageViewController 创建一个自定义 class 作为 swift 文件。不要忘记遵守 UIPageViewControllerDataSource 和 UIPageViewControllerDelegate。像这样:

class MyPageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {

   override func viewDidLoad() {
       super.viewDidLoad()

       dataSource = self
       delegate = self
   }

}

接下来将 UIViewController 放入情节提要中,并将您的自定义 UIViewController 创建为 Swift 文件。还要在故事板中为 UIViewController 提供一个 ID,例如 "myViewController"。您的自定义视图控制器需要的最少内容是需要显示的插座和设置这些插座的变量。不能直接设置网点,所以需要自己创建设置网点的变量。

class MyViewController: UIViewController {

@IBOutlet weak var myOutlet: UILabel

var myVariable = ""
var index

override viewDidLoad() {
    super.viewDidLoad()
    myOutlet.text = myVariable

}

返回您的自定义 UIPageViewController 并在 viewWillAppear 中实例化您要使用以下调用显示的第一个视图。

override function viewWillAppear(_ animated: Bool) {

    super.viewWillAppear(true)

    let index = 0
    let startingViewController = storyboard?.instantiateViewController(withIdentifier: "myViewController") as! MyViewController 
    startingViewController.index = index
    startingViewController.myVariable = contentArray[index]
//The contentArray contains the content you want to display in your view controller.
    self.setViewControllers([startingViewController], direction: .forward, animated: true, completion: nil)
}

然后实现数据源方法 func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?和 func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?。例如,后者可以这样实现:

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {

    let index = (viewController as! MyViewController).index
    index += 1

    if (index < 0) || (index>= contentArray.count) {return nil}

    let contentViewController = storyboard?.instantiateViewController(withIdentifier: "myViewController") as! MyViewController 
    contentViewController.myVariable = contentArray[index]
    contentViewController.index = index
    return contentViewController
}

当然,你不应该正式地强制解包你的可选项,但我把正确的编码留给你。这将为您提供出色的滑动体验,您可以将星期几作为页面滑动。

https://github.com/lakshikabhardwaj/LBViewControllerCollection

示例代码

let mainViewController = CPPageMenuVC(nibName: "CPPageMenuVC", bundle: nil) let pageMenuarray :[PageModal] = [PageModal(pageTitle: "Cat", pageVC: catVC),PageModal(pageTitle: "Cow", pageVC: cowCv),PageModal(pageTitle: "Chat", pageVC: cpCatVC),PageModal(pageTitle: "ElephantElephant", pageVC: elephantVC)]