2016-08-03 38 views
1

是否有可能將page controller添加到UITableViewHeader中?頁面控制在UITableView標題中。 swift

enter image description here

黃色是表視圖頭,藍色是表視圖。

下面我tableViewHeader:的UIView():

lazy var resultLabel : UILabel = { 
    let label = UILabel() 
    return label 
}()  
lazy var pageControl = UIPageControl() 
    lazy var pageIndex: Int = 0 

override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.addSubview(resultLabel) 
     configurePageControl() 
     setUpConstraints() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    func setUpConstraints() { 
     resultLabel.snp_makeConstraints { 
      $0.center.equalTo(snp_center) 
     } 
     pageControl.snp_makeConstraints { 
      $0.top.equalTo(snp_top).offset(20) 
      $0.left.equalTo(resultLabel.snp_right).offset(0) 
     } 
    } 

    func configurePageControl() { 
     self.pageControl.numberOfPages = 3 
     self.pageControl.currentPage = pageIndex 
     self.pageControl.tintColor = UIColor.redColor() 
     self.pageControl.pageIndicatorTintColor = UIColor.blackColor() 
     self.pageControl.currentPageIndicatorTintColor = UIColor.lightGrayColor() 
     self.addSubview(pageControl) 
    } 

,在這裏我的視圖控制器,它將處理。

class NewsResultsViewController: UIPageViewController, UIPageViewControllerDataSource { 
    var results: NSArray = NSArray() 

    override init(transitionStyle style: UIPageViewControllerTransitionStyle, navigationOrientation: UIPageViewControllerNavigationOrientation, options: [String : AnyObject]?) { 
     super.init(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: options) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     results = ["0:2", "2:1", "0:0"] 

     self.dataSource = self 

     self.setViewControllers([getViewControllerAtIndex(0)], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil) 
    } 

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

     let pageContent: NewsHeaderView = viewController as! NewsHeaderView 

     var index = pageContent.pageIndex 

     if ((index == 0) || (index == NSNotFound)) 
     { 
      return nil 
     } 

     index -= 1; 

     return getViewControllerAtIndex(index) 
    } 

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

     let pageContent: NewsHeaderView = viewController as! NewsHeaderView 

     var index = pageContent.pageIndex 

     if (index == NSNotFound) 
     { 
      return nil; 
     } 

     index += 1; 

     if (index == results.count) 
     { 
      return nil; 
     } 


     return getViewControllerAtIndex(index) 
    } 

    func getViewControllerAtIndex(index: NSInteger) -> NewsTableViewController { 
     let getStartedPageContentViewController = NewsHeaderView() 

     getStartedPageContentViewController.pageIndex = index 
     getStartedPageContentViewController.resultLabel.text = "\(results[index])" 

     return getStartedPageContentViewController 
    } 

} 

但實際上這裏有一些錯誤。我不能通過表視圖標題(我可以通過視圖控制器)。任何幫助?由於

+0

如果您在使用情節串連圖板,只是把UIPageControl成標題視圖,並連接到IBOutlets頭。使IBOutlet在VC的headerView中顯示並更改頁面索引的方法。 –

+0

我不使用故事板:\ –

回答

0

只是把這個功能給你的代碼:

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int { 

    return 3 

} 

// Enables pagination dots 

不要忘記設置:

dataSource = self 

    delegate = self