Ios 在swift中的视图控制器之间滑动
在Swift中,我当前在我的第一个视图控制器中有以下代码,但当我滑动时,什么都没有发生?我的代码有什么问题?我是否必须实施其他措施?非常感谢用户,非常感谢Ios 在swift中的视图控制器之间滑动,ios,swift,uiviewcontroller,uipageviewcontroller,Ios,Swift,Uiviewcontroller,Uipageviewcontroller,在Swift中,我当前在我的第一个视图控制器中有以下代码,但当我滑动时,什么都没有发生?我的代码有什么问题?我是否必须实施其他措施?非常感谢用户,非常感谢 import UIKit class ViewController: UIViewController, UIPageViewControllerDataSource { override func viewDidLoad() { super.viewDidLoad() // Do any add
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]
}
}
导入UIKit
类ViewController:UIViewController、UIPageViewControllerDataSource{
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后,通常从nib执行任何其他设置。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
var myViewControllers=Array(计数:4,repeatedValue:UIViewController())
重写func prepareforsgue(segue:UIStoryboardSegue,sender:AnyObject!){
将pvc=segue.destinationViewController设为UIPageViewController
pvc.dataSource=self
让故事板=UIStoryboard(名称:“Main”,捆绑包:nil);
var vc0=情节提要。实例化作为UIViewController的EviewController标识符(“FirstViewController”)
var vc1=情节提要。实例化eviewcontrollerwhiteIdentifier(“SecondViewController”)作为UIViewController
var vc2=情节提要。实例化作为UIViewController的EViewController标识符(“第三个ViewController”)
var vc3=情节提要。实例化eviewcontrollerwhiteIdentifier(“第四视图控制器”)作为UIViewController
self.myViewController=[vc0、vc1、vc2、vc3]
pvc.setViewController([MyViewController[1]],方向:。正向,动画:false,完成:nil)
println(“已加载”)
}
func pageViewController(pageViewController:UIPageViewController,viewControllerAfterViewController:UIViewController)->UIViewController{
var currentIndex=find(self.myViewControllers,viewController)!+1
如果currentIndex>=self.MyViewController.count{
归零
}
返回self.MyViewController[currentIndex]
}
func pageViewController(pageViewController:UIPageViewController,viewController预览控制器viewController:UIViewController)->UIViewController{
var currentIndex=find(self.myViewControllers,viewController)!-1
如果当前索引<0{
归零
}
返回self.MyViewController[currentIndex]
}
}
对不起,您的代码对我来说非常适合。我做了一个简单的测试(以前从未使用过UIPageViewController),用一个按钮从初始VC切换到页面VC,在故事板中有两个断开连接的VC,用你的代码以编程方式构建(我直接从上面粘贴了它),然后交给页面VC。3个可见页面中的每一个都用标签标识。它们都很好用
您的UIPageViewController是否得到实例化?上面的两个代理例程是否被调用
我怀疑您没有正确设置故事板。这是我的:
当iOS运行你的应用程序时,它会将控制权转移到初始VC。这就是您正在编写代码的源代码,在上面的源代码中称为ViewController
。这不是一个UIPageViewController
;它是一个普通的UIViewController
,它在这里这样说:
class ViewController: UIViewController, UIPageViewControllerDataSource {
UIPageViewControllerDataSource
位只是说它还提供了告诉UIPageViewController
显示什么的例程。当您从ViewController
执行一个segue时,prepareForSegue
代码将运行,并将segue的目标(预期为UIPageViewController
)与其他4个VCs一起编程。为了让这个过程正常工作,我将ui按钮
拖到故事板中的第一个ViewController
,然后将ui页面ViewController
拖到右边。然后控制从按钮到UIPageViewController的拖动。你应该得到一个弹出窗口,询问你想要什么样的序列。我选择了模态。当你运行应用程序时,你应该看到按钮。当您按下按钮时,您应该会看到VC1,向左或向右滑动将显示其他按钮。当您从左向右滑动时,它是否可以跨VC工作?我所做的就是在我的第一个VC中粘贴代码,尽管我还需要做更多的工作。我有一个UIPageViewController,但它是否必须以某种方式进行标识和链接?我所做的只是粘贴代码,并期望它从左向右滑动。另外,我不想用按钮/标签来切换,只想滑动。哦,天哪,它工作了!谢谢,但是,当涉及到我的表视图时,用户必须在该行上滑动选项,当我滑动它时,VC不会更改tableview行选项。我可以覆盖它吗?另外,像Snapchat这样的应用程序是如何使整个分页效果不显示的,但是当你滑动时它会改变VC,所以它更干净,或者这是一件完全不同的事情?我能实现页面控件吗?如果是的话,我该怎么做?恭喜!如果你想问更多的问题,我想你应该问新问题。