[英]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.