以编程方式添加 UIPageViewController
Add a UIPageViewController programmatically
我正在尝试以编程方式将 UIPageViewController
添加到自定义 UICollectionViewCell
。在预期的结果中,我希望能够在 UICollectionViewCell
内的不同控制器之间滑动。这是我写的代码:
import UIKit
class SlidingCellCell : UICollectionViewCell, UIPageViewControllerDataSource, UIPageViewControllerDelegate{
var pages = [UIViewController]()
let pageControl = UIPageControl()
let pageViewController = UIPageViewController()
override func awakeFromNib() {
super.awakeFromNib()
pageViewController.dataSource = self
pageViewController.delegate = self
let initialPage = 0
let page1 = myViewController1()
let page2 = myViewController1()
let page3 = myViewController1()
self.pages.append(page1)
self.pages.append(page2)
self.pages.append(page3)
pageViewController.setViewControllers([pages[initialPage]], direction: .forward, animated: true, completion: nil)
pageViewController.view.frame = self.frame
}
我坚持要将 pageViewController
添加到 cell
。如果我写 self.addSubview(pageViewController)
我会收到一条错误消息,告诉我该函数需要一个 UIView
.
我还有另一个错误告诉我 class 不符合 protocol UIPageViewControllerDataSource
。
1.对于错误:函数需要 UIView
.
override func awakeFromNib()
{
super.awakeFromNib()
//Your code..
self.contentView.addSubview(pageViewController.view)
}
2。对于错误:class 不符合协议 UIPageViewControllerDataSource
.
执行以下方法:
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
//TODO:
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?
{
//TODO:
}
首先,您必须将 viewcontroller 的视图添加到单元格中,同时注意孩子 viewcontroller 的生命周期,例如:
pageViewController.willMove(toParentViewController: <cell's parent viewcontroller coming here>)
addSubview(pageViewController.view)
pageViewController.view.frame = bounds // Set the viewcontroller's view's size, or do it with constraints
pageViewController.didMove(toParentViewController: <same as above>)
之后你必须在单元格中实现这两个方法(我不建议在那里创建 viewcontrollers,但那是另一个话题)
func pageViewController(UIPageViewController, viewControllerBefore: UIViewController) -> UIViewController?
func pageViewController(UIPageViewController, viewControllerBefore: UIViewController) -> UIViewController?
我正在尝试以编程方式将 UIPageViewController
添加到自定义 UICollectionViewCell
。在预期的结果中,我希望能够在 UICollectionViewCell
内的不同控制器之间滑动。这是我写的代码:
import UIKit
class SlidingCellCell : UICollectionViewCell, UIPageViewControllerDataSource, UIPageViewControllerDelegate{
var pages = [UIViewController]()
let pageControl = UIPageControl()
let pageViewController = UIPageViewController()
override func awakeFromNib() {
super.awakeFromNib()
pageViewController.dataSource = self
pageViewController.delegate = self
let initialPage = 0
let page1 = myViewController1()
let page2 = myViewController1()
let page3 = myViewController1()
self.pages.append(page1)
self.pages.append(page2)
self.pages.append(page3)
pageViewController.setViewControllers([pages[initialPage]], direction: .forward, animated: true, completion: nil)
pageViewController.view.frame = self.frame
}
我坚持要将 pageViewController
添加到 cell
。如果我写 self.addSubview(pageViewController)
我会收到一条错误消息,告诉我该函数需要一个 UIView
.
我还有另一个错误告诉我 class 不符合 protocol UIPageViewControllerDataSource
。
1.对于错误:函数需要 UIView
.
override func awakeFromNib()
{
super.awakeFromNib()
//Your code..
self.contentView.addSubview(pageViewController.view)
}
2。对于错误:class 不符合协议 UIPageViewControllerDataSource
.
执行以下方法:
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
//TODO:
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?
{
//TODO:
}
首先,您必须将 viewcontroller 的视图添加到单元格中,同时注意孩子 viewcontroller 的生命周期,例如:
pageViewController.willMove(toParentViewController: <cell's parent viewcontroller coming here>)
addSubview(pageViewController.view)
pageViewController.view.frame = bounds // Set the viewcontroller's view's size, or do it with constraints
pageViewController.didMove(toParentViewController: <same as above>)
之后你必须在单元格中实现这两个方法(我不建议在那里创建 viewcontrollers,但那是另一个话题)
func pageViewController(UIPageViewController, viewControllerBefore: UIViewController) -> UIViewController?
func pageViewController(UIPageViewController, viewControllerBefore: UIViewController) -> UIViewController?