1
是否有可能將page controller
添加到UITableViewHeader中?頁面控制在UITableView標題中。 swift
黃色是表視圖頭,藍色是表視圖。
下面我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
}
}
但實際上這裏有一些錯誤。我不能通過表視圖標題(我可以通過視圖控制器)。任何幫助?由於
如果您在使用情節串連圖板,只是把UIPageControl成標題視圖,並連接到IBOutlets頭。使IBOutlet在VC的headerView中顯示並更改頁面索引的方法。 –
我不使用故事板:\ –