1
UITableViewHeaderにpage controller
を追加することは可能ですか?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を接続します
を設定することを忘れないでください。 VCのheaderViewにIBOutletも作成し、メソッドを公開してページインデックスを変更します。 –
ストーリーボードを使用していないIm:\ –