gpt4 book ai didi

ios - 快速在 View Controller 之间滑动

转载 作者:行者123 更新时间:2023-11-28 07:08:41 27 4
gpt4 key购买 nike

在 Swift 中,目前我的第一个 View Controller 中有以下代码,但是当我滑动时没有任何反应?我的代码有什么问题?我还需要执行其他操作吗?非常感谢 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 转到页面 VC, Storyboard中的两个断开连接的 VC 将用您的代码以编程方式构建(我直接从上面粘贴)和给 Page VC。 3 个可见页面中的每一个都用标签标识。它们都工作正常。

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

我怀疑您没有正确设置 Storyboard。这是我的:

Storyboard screengrab

当 iOS 运行您的应用程序时,它会将控制权转移到初始 VC。这就是您要在其中编写代码的那个,在上面的源代码中称为 ViewController。那不是 UIPageViewController;这是一个普通的 UIViewController,它在这里这样说:

class ViewController: UIViewController, UIPageViewControllerDataSource {

UIPageViewControllerDataSource 位只是说它还提供了告诉 UIPageViewController 要显示什么的例程。当您从 ViewController 进行转场时,prepareForSegue 代码随后运行,并对转场的目标进行编程,预计为 UIPageViewController,与其他 4 家 VC。为了使 segue 正常工作,我将 UIButton 拖到 Storyboard 中的第一个 ViewController,并将 UIPageViewController 拖到右侧。然后按住 control 从按钮拖动到 UIPageViewController。你应该得到一个弹出窗口,询问你想要什么样的 segue。我选择了模态。当您运行该应用程序时,您应该会看到该按钮。按下按钮时,您应该会看到 VC1,向左或向右滑动会显示其他按钮。

关于ios - 快速在 View Controller 之间滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430422/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com