美文网首页iOS Development程序员iOS开发
Swift 3 --Storyboard - UIPageVie

Swift 3 --Storyboard - UIPageVie

作者: 71150ce14a00 | 来源:发表于2017-02-14 17:32 被阅读700次

    1 创建一个空项目

    拖一个UINavigationController 并且设置一个root controller


    1

    2 在控件库里搜索 container view 控件, 拖入 root controller 空白处,删除 container view 自带的controller , 并设置layout填满controller

    2

    3 在控件库搜索 pageViewcontroller 并添加 选中Container View,按住control键,用鼠标左键向第一个Page View Controller拖,放开左键,从弹出菜单中选择Embed

    设置pageView 滚动方式

    0 3

    4接下来创建pagController中的子视图 创建三个controller 并创建类与之关联 我这里创建OneController,TwoController,ThreeController

    4

    截止到现在我们的布局已经完成
    接下来就是代码部分

    class MainViewController: UIViewController {
    
    var pageViewController: UIPageViewController!
    var movieController: TwoController!
    var musicController: OneController!
    var bookController: ThreeController!
    var controllers = [UIViewController]()
    
    @IBOutlet var navView: UIView!
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.navigationItem.titleView = self.navView
        
        //获取到嵌入的UIPageViewController
        pageViewController = self.childViewControllers.first as! UIPageViewController
        
        //根据Storyboard ID来创建一个View Controller
        movieController = storyboard?.instantiateViewController(withIdentifier: "MovieControllerID") as! TwoController
        musicController = storyboard?.instantiateViewController(withIdentifier: "MusicControllerID") as! OneController
        bookController = storyboard?.instantiateViewController(withIdentifier: "BookControllerID") as! ThreeController
        
        //设置pageViewController的数据源代理为当前Controller
        pageViewController.dataSource = self
        pageViewController.delegate = self
        
        //手动为pageViewController提供提一个页面
        pageViewController.setViewControllers([movieController], direction: UIPageViewControllerNavigationDirection.forward, animated: true, completion: nil)
        //把页面添加到数组中
        controllers.append(movieController)
        controllers.append(musicController)
        controllers.append(bookController)
        
    
    
    }
    
    @IBAction func OnePageAction(_ sender: Any) {
        
        pageViewController.setViewControllers([musicController], direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil)
        
    }
    
    @IBAction func twoViewController(_ sender: Any) {
        pageViewController.setViewControllers([movieController], direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil)
    }
    
    @IBAction func threePageAction(_ sender: Any) {
        pageViewController.setViewControllers([bookController], direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil)
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

    }

    extension MainViewController:UIPageViewControllerDataSource,UIPageViewControllerDelegate {

        //返回当前页面的下一个页面
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
            
            if viewController.isKind(of: TwoController.self) {
                return bookController
            }
            else if viewController.isKind(of: OneController.self) {
                return movieController
            }
            return nil
            
        }
        
        //返回当前页面的上一个页面
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
            
            if viewController.isKind(of: TwoController r.self) {
                return musicController
            }
            else if viewController.isKind(of: ThreeController.self) {
                return movieController
            }
            return nil
        }
    
    func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {
        
        
        
    }
    
    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
        
    }
    }
    

    相关文章

      网友评论

      本文标题:Swift 3 --Storyboard - UIPageVie

      本文链接:https://www.haomeiwen.com/subject/hrtfwttx.html