2015-04-03 91 views
1

在Swift中,我目前在我的第一个视图控制器中有以下代码,但是当我刷卡没有任何反应?我的代码有什么问题?我必须执行其他的事情吗?非常感谢SO用户,非常感谢。swift之间在视图控制器之间滑动

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] 
    } 

} 

回答

1

对不起,您的代码对我来说是完美的。我做了一个简单的测试(从来没有使用过UIPageViewController),有一个按钮从最初的VC延伸到Page VC,两个断开的VC以编程方式用你的代码构建(我从上面直接粘贴)和赋予Page VC。 3个可见页面中的每一个都用标签标识。他们都很好。

你的UIPageViewController是否被实例化?上面的两个委托例程被调用了吗?

我怀疑你没有适当地设置你的故事板。这里是我的:

Storyboard screengrab

当iOS的运行你的应用程序,它把控制权交给初始VC。这是你写代码的那个,在上面的源代码中叫做ViewController。那不是UIPageViewController;这是一个普通的UIViewController,它是这么说的这里:

class ViewController: UIViewController, UIPageViewControllerDataSource { 

UIPageViewControllerDataSource位只是说,它也提供了告诉UIPageViewController什么来显示程序。当您从ViewController中选择一个时,prepareForSegue代码将运行,然后将segue的目标(其预期为UIPageViewController)与其他4个VC编程。为了使segue正常工作,我将UIButton拖到故事板中的第一个ViewController,并将UIPageViewController拖到右侧。然后控制 - 从按钮拖动到UIPageViewController。你应该得到一个弹出窗口询问你想要什么样的segue。我选择了模态。当你运行应用程序时,你应该看到按钮。当您按下按钮时,您应该看到VC1,向左或向右滑动会显示其他人。

+0

当你从左向右滑动时,它是否可以跨VC使用?我所做的只是将代码粘贴到我的第一个VC中,尽管应该有更多我必须做的事情。我有一个UIPageViewController,但它具体必须被识别并以某种方式链接?我所做的只是粘贴代码,并期望它从左向右滑动。此外,我不想使用按钮/标签继续,只是轻扫。 – wogwog 2015-04-03 22:41:40

+0

我画了我的故事板。更清楚了吗? – emrys57 2015-04-04 08:24:16

+0

哦,我的工作!谢谢,虽然,当涉及到我的表格视图,用户必须在该行上滑动选项时,当我滑过它时,VC更改而不是tableview行选项。我可以重写这个吗? – wogwog 2015-04-05 00:55:35