UIPageViewController

一、了解一下

@1、UIPageViewController 可以輕松在其他管理的各View間滑動(dòng)切換
不僅局限于創(chuàng)建引導(dǎo)頁(yè)
Page.png
@2、 與導(dǎo)航控制器相似,翻頁(yè)控制器 是一個(gè)容器控制器
作用
管理視圖
控制切換
@3、容器中的每一頁(yè)其實(shí)都是自治的,由每一頁(yè)的控制器管理

二、如何使用

HOW.png
@1、此處舉例,引導(dǎo)頁(yè)字頁(yè)面都是復(fù)用,所以使用動(dòng)態(tài),每次切換下一頁(yè)時(shí),都會(huì)咨詢數(shù)據(jù)源,所以需要遵守如下協(xié)議,實(shí)現(xiàn)如下方法:
UIPageViewControllerDataSource
//MARK: - UIPageViewControllerDataSource
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
        var index = (viewController as! ContentViewController).index
        
        index -= 1
        
        return vc(atIndex: index)
    }
    
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
        var index = (viewController as! ContentViewController).index
        
        index += 1
        
        return vc(atIndex: index)
    }
    
    func vc(atIndex: Int) -> ContentViewController? {
        //判斷index是否在合理的區(qū)間內(nèi),用Swift的if case語(yǔ)句
        if case 0..<headings.count = atIndex {
            if let contentVC = storyboard?.instantiateViewController(withIdentifier: "ContentViewController") as? ContentViewController{
                contentVC.heading = headings[atIndex]
                contentVC.footer = footers[atIndex]
                contentVC.imageName = images[atIndex]
                contentVC.index = atIndex
                
                return contentVC
            }
        }
        return nil
    }
 
@如何調(diào)用
  
    override func viewDidLoad() {
        super.viewDidLoad()
        
        dataSource = self
        
        if let startVC = vc(atIndex: 0) {
            setViewControllers([startVC], direction: .forward, animated: true, completion: nil)
        }


    }
    

三、添加頁(yè)碼

頁(yè)碼.png
 // MARK: - 添加頁(yè)碼
    func presentationCount(for pageViewController: UIPageViewController) -> Int {
        return headings.count
    }
    func presentationIndex(for pageViewController: UIPageViewController) -> Int {
        return 0
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容