簡體   English   中英

快速在視圖控制器之間滑動

[英]Swiping between View Controllers in swift

在Swift中,當前我的第一個視圖控制器中包含以下代碼,但是當我滑動時什么都沒有發生? 我的代碼有什么問題? 我還需要實施其他東西嗎? 非常感謝SO用戶,非常感謝。

import UIKit


class ViewController: UIViewController, UIPageViewControllerDataSource {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


    }

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

    }

    var myViewControllers = Array(count: 4, repeatedValue:UIViewController())

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        let pvc = segue.destinationViewController as UIPageViewController

        pvc.dataSource = self

        let storyboard = UIStoryboard(name: "Main", bundle: nil);

        var vc0 = storyboard.instantiateViewControllerWithIdentifier("FirstViewController") as UIViewController
        var vc1 = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as UIViewController
        var vc2 = storyboard.instantiateViewControllerWithIdentifier("ThirdViewController") as UIViewController
        var vc3 = storyboard.instantiateViewControllerWithIdentifier("FourthViewController") as UIViewController

        self.myViewControllers = [vc0, vc1, vc2, vc3]

        pvc.setViewControllers([myViewControllers[1]], direction:.Forward, animated:false, completion:nil)

        println("Loaded")
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
        var currentIndex =  find(self.myViewControllers, viewController)!+1
        if currentIndex >= self.myViewControllers.count {
            return nil
        }
        return self.myViewControllers[currentIndex]
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
        var currentIndex =  find(self.myViewControllers, viewController)!-1
        if currentIndex < 0 {
            return nil
        }
        return self.myViewControllers[currentIndex]
    }

}

抱歉,您的代碼對我來說是完美的。 我做了一個簡單的測試(以前從未使用過UIPageViewController),並使用一個按鈕將其從初始VC篩選到Page VC,並將故事板上的兩個斷開連接的VC用您的代碼以編程方式構造(我直接從上面粘貼了它),提供給Page VC。 3個可見頁面的每一個都用標簽標識。 他們都工作正常。

您的UIPageViewController是否實例化? 上面的兩個委托例程會被調用嗎?

我懷疑您沒有正確設置情節提要。 這是我的:

故事板屏幕抓圖

當iOS運行您的應用程序時,它將控制權轉移到初始VC。 這就是您在其中編寫代碼的代碼,在上述源代碼中稱為ViewController 那不是UIPageViewController ; 這是一個普通的UIViewController ,它在這里說:

class ViewController: UIViewController, UIPageViewControllerDataSource {

UIPageViewControllerDataSource位只是說它還提供了告訴UIPageViewController要顯示什么的例程。 當您從ViewController執行segue時,將運行prepareForSegue代碼,並使用其他4個VC對segue的目的地(應該是UIPageViewController進行UIPageViewController 為了使segue正常工作,我將UIButton拖到情節UIPageViewController的第一個ViewController上,並將UIPageViewController拖到右側。 然后,將控件從按鈕拖動到UIPageViewController。 您應該彈出一個窗口,詢問您想要哪種類型的segue。 我選擇了模態。 運行該應用程序時,您應該看到該按鈕。 按下按鈕時,您應該看到VC1,向左或向右滑動將顯示其他按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM