ios - UIPageViewController 下一个按钮

标签 ios swift

我正在尝试用 Swift 开发一个教程。我有一个使用指示器 ( http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/ ) 的页面 View Controller ,但我想添加一个按钮以通过单击它而不是滑动屏幕 (TODO NextPage) 转到下一页。

import UIKit

class TutorialViewController: UIViewController, UIPageViewControllerDataSource {

var pageViewController: UIPageViewController!
var pageTexts: NSArray!
var pageImages: NSArray!
var index: Int = 0

@IBOutlet var button: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    self.pageTexts = NSArray(objects: "Explore", "Today Widget")
    self.pageImages = NSArray(objects: "background1.jpg", "background2.jpg")

    self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController

    self.pageViewController.dataSource = self

    let startVC = self.viewControllerAtIndex(index) as TutorialContentViewController
    let viewControllers = NSArray(object: startVC)

    self.pageViewController.setViewControllers(viewControllers as! [UIViewController], direction: .Forward, animated: true, completion: nil)
    self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.size.height - 60)

    self.addChildViewController(self.pageViewController)
    self.view.addSubview(self.pageViewController.view)
    self.pageViewController.didMoveToParentViewController(self)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func viewControllerAtIndex(index: Int) -> TutorialContentViewController {
    if (index >= self.pageTexts.count) {
        return TutorialContentViewController()
    }

    let vc: TutorialContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("TutorialContentViewController") as! TutorialContentViewController

    vc.image = self.pageImages[index] as! String
    vc.text = self.pageTexts[index] as! String
    vc.pageIndex = index
    self.index = index

    self.button.setTitle(self.index == self.pageTexts.count - 1 ? "Finish" : "Next", forState: .Normal)

    return vc
}


// MARK: - Page View Controller Data Source
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
    let vc = viewController as! TutorialContentViewController
    let index = vc.pageIndex as Int

    return self.viewControllerAtIndex(index)
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
    let vc = viewController as! TutorialContentViewController
    var index = vc.pageIndex as Int

    if (index == NSNotFound) {
        return nil
    }

    index++
    if (index == self.pageTexts.count) {
        self.button.setTitle("Finish", forState: .Normal)
        return nil
    } else {
        self.button.setTitle("Next", forState: .Normal)
    }
    return self.viewControllerAtIndex(index)
}

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
    return self.pageTexts.count
}

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
    return 0
}

@IBAction func onButtonClick(sender: AnyObject) {
    if (self.index == self.pageTexts.count - 1) {
        let vc : UIViewController = self.storyboard!.instantiateViewControllerWithIdentifier("splashViewController")
        vc.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
        self.presentViewController(vc, animated: true, completion:nil)
    } else {
        //TODO NextPage
    }
}

最佳答案

您可以使用:

下一页

@IBAction func onButtonNextClick(sender: object) {
    pageViewController.setViewControllers(viewControllers,
                                                    direction: UIPageViewControllerNavigationDirection.Forward,
                                                    animated: true,
                                                    completion: nil)
}

上一页

@IBAction func onButtonPreviousClick(sender: object) {
    pageViewController.setViewControllers(viewControllers,
                                                    direction: UIPageViewControllerNavigationDirection.Reverse,
                                                    animated: true,
                                                    completion: nil)
}

关于ios - UIPageViewController 下一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33407986/

相关文章:

swift - 实际上,如何在 Xcode 中使用一条横跨整个屏幕的垂直线分隔两个部分

ios - swift 第一个简单项目 - 无法调用对象方法

ios - Pods 库与第一个目标链接两次,如 libPods.a 和 libPods-<targetname>.a

javascript - React-native 无法在导入 js 文件时解析模块

ios - 富文本格式目录文件到 NSAttributedString

swift - 我在 SwiftUI 的文本字段上使用拐角半径和边框时遇到问题

ios - 访问自定义 UITableViewCells 中的对象

ios - 当字体变大时如何将一个约束优先于另一个约束

ios - 从一个 View Controller 到另一个 View Controller 遇到 'segueing' 问题,收到奇怪的警告

ios - 如何确保 xib 文件在所有设备上正确显示?