带有上一个和下一个按钮的 UIPageViewController

Posted

技术标签:

【中文标题】带有上一个和下一个按钮的 UIPageViewController【英文标题】:UIPageViewController with previous and next buttons 【发布时间】:2017-11-14 01:43:37 【问题描述】:

如何向 UIPageViewController 添加上一个和下一个按钮,并且只有在按钮单击时页面才会随着水平滚动效果而变化。任何人都可以建议我参考任何教程吗? 由于我是 Swift 新手,我不知道如何实现这一点。请帮忙..

【问题讨论】:

是否需要使用 pageViewController 是的...应该使用PageviewController。 查询解决了吗? 【参考方案1】:

获取下一个和上一个 UIViewController

你应该知道当前页和上一页/下一页是什么。

示例:

@IBAction func onNext(btn:UIButton) 
    let currentVC = self
    let nextVC = getNextVC(from: currentVC)//implement it!
    // do stuff... (turn page)

翻页

这个很简单,UIPageViewController提供了这样一个功能。

示例:

pageViewController.setViewControllers([nextVC], direction: .forward, animated: true, completion: nil)

【讨论】:

感谢您的回复。作为 Swift 的新手,我不知道如何实现这一点。你能解释一下吗?【参考方案2】:

在这里您可以像使用按钮一样进行操作:

func addUIButton()
        //next button 
        let myButton = UIButton()
        myButton.setTitle("Next", for: UIControlState.normal)
        myButton.setTitleColor(UIColor.red, for: .normal)
        myButton.frame = CGRect(x: self.view.frame.size.width - 50, y: self.view.frame.size.height/2 - 50, width: 50, height: 50)
        myButton.addTarget(self, action: #selector(pagesViewController.pressed(sender:)), for: .touchUpInside)
        self.view.addSubview(myButton)
        self.view.bringSubview(toFront: myButton)
    
    func addSecondUIButton()
        //previous button
        let myButton = UIButton()
        myButton.setTitle("Previous", for: UIControlState.normal)
        myButton.setTitleColor(UIColor.red, for: .normal)
        myButton.frame = CGRect(x: 20, y: self.view.frame.size.height/2 - 50, width: 100, height: 50)
        myButton.addTarget(self, action: #selector(pagesViewController.Secondpressed(sender:)), for: .touchUpInside)
        self.view.addSubview(myButton)
        self.view.bringSubview(toFront: myButton)
    

按钮处理程序:

func pressed(sender: UIButton!)  //next button
        switch VC.CurrentVC 
        case page1:
            VC.CurrentVC = page2
            getNextVC(newIndex: page2)

            break
        case page2:
            VC.CurrentVC = page3
            getNextVC(newIndex: page3)

            break
        case page3:
            VC.CurrentVC = page1
            getNextVC(newIndex: page1)

            break
        default:
            VC.CurrentVC = page1
            getNextVC(newIndex: page1)

        
    
    func Secondpressed(sender: UIButton!)  //previous button
        switch VC.CurrentVC 
        case page1:
            VC.CurrentVC = page3
            getNextVC(newIndex: page3)

            break
        case page3:
            VC.CurrentVC = page2
            getNextVC(newIndex: page2)

            break
        case page2:
            VC.CurrentVC = page1
            getNextVC(newIndex: page1)

            break
        default:
            VC.CurrentVC = page1
            getNextVC(newIndex: page1)

        
    

处理移动到nextVC的方法

func getNextVC(newIndex: UIViewController)

        setViewControllers([newIndex], direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil)
    

结构类: //存储当前的vc

import Foundation

import UIKit

struct VC 
    static var CurrentVC = UIViewController()

演示项目链接 - https://drive.google.com/open?id=1pWLMcU2eny65zqdjxOMbnry2FwhkRjye

参考链接查看

输出截图

【讨论】:

以上是关于带有上一个和下一个按钮的 UIPageViewController的主要内容,如果未能解决你的问题,请参考以下文章

工具栏上一个和下一个按钮逻辑

将上一个和下一个按钮添加到 li item php 或 jquery

在android studio中使用上一个和下一个按钮打开不同的pdf文件?

如何使用 MongoDB ObjectId 作为上一个和下一个按钮的键进行分页?

带有下一个/上一个按钮的 Jquery 图像库无法正常工作

Datepicker 上一个和下一个按钮图像问题