2017-08-10 21 views
0

UIPageViewControllerをプログラムでカスタムcollectionViewCellに追加しようとしています。期待される結果では、collectionViewCell内の異なるコントローラ間でスワイプしたいと思っています。これは、私が書いたコードですプログラムでUIPageViewControllerを追加します。

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を追加することに固執しています。私がself.addSubview(pageViewController)を書くと、関数がUIViewを待っていると私にエラーが出る。

また、クラスがUIPageViewControllerDataSourceプロトコルに準拠していないというエラーが表示されます。

答えて

0

1.エラーの場合:機能は、UIViewを想定しています。エラーの

override func awakeFromNib() 
{ 
    super.awakeFromNib() 
    //Your code.. 

    self.contentView.addSubview(pageViewController.view) 
} 

2:クラスの用量は、プロトコルUIPageViewControllerDataSourceに準拠していません。

実装以下の方法:

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

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? 
{ 
    //TODO: 
} 
0

まずあなたがセルに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>) 

でchildviewcontrollerのライフサイクルについての世話をする必要がありこれら2つのメソッドをセルに実装する必要があります(ビューコントロールを作成することは推奨されませんが、別のトピックです)。

func pageViewController(UIPageViewController, viewControllerBefore: UIViewController) -> UIViewController? 

func pageViewController(UIPageViewController, viewControllerBefore: UIViewController) -> UIViewController? 
関連する問題