(Swift) 在视图控制器之间滑动需要帮助
(Swift) need help swiping between view controllers
这些是我的视图控制器:
我想这样做,以便我可以从中间的一个开始在三个之间滑动。我发现的所有教程都要求您从头开始,并且没有告诉我如何连接我拥有的三个教程。有没有人知道如何执行此操作的分步说明?
如有任何帮助,我们将不胜感激
您可以通过导航控制器连接您的视图控制器。只需 select 您的视图控制器之一 -> 编辑器(在 mac 的顶部栏上) -> 嵌入 -> 导航控制器。
此外,如果您想滑动,可以使用滚动视图,并且只能在视图控制器上使用。内容大小为 3 个视图控制器的滚动视图可以帮助你做同样的事情。
谢谢
首先创建一个名为 PageViewController 的 class,将 UIPageViewController
拖入 storyboard.For 现在让我们从属性检查器将其设置为初始视图控制器。同样来自身份检查员将 PageViewController 设置为 Class.
调用你的三视图控制器,例如 StepZero、StepOne、StepTwo 并在故事板中为它们提供标识符。
现在让我们深入编码,所以在 PageViewController 中应该 subclass UIPageVIewController
:
import UIKit
class PageViewController : UIPageViewController,UIPageViewControllerDataSource {
var selectedIndex = 1
override func viewDidLoad() {
dataSource = self
view.backgroundColor = UIColor.darkGrayColor()
// This is the starting point. Start with step zero.
setViewControllers([getStepOne()], direction: .Forward, animated: false, completion: nil)
}
func getStepZero() -> StepZero {
return storyboard!.instantiateViewControllerWithIdentifier("StepZero") as! StepZero
}
func getStepOne() -> StepOne {
return storyboard!.instantiateViewControllerWithIdentifier("StepOne") as! StepOne
}
func getStepTwo() -> StepTwo {
return storyboard!.instantiateViewControllerWithIdentifier("StepTwo") as! StepTwo
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
if viewController.isKindOfClass(StepTwo) {
// 2 -> 1
return getStepOne()
} else if viewController.isKindOfClass(StepOne) {
// 1 -> 0
return getStepZero()
} else {
// 0 -> end of the road
return nil
}
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
if viewController.isKindOfClass(StepZero) {
// 0 -> 1
return getStepOne()
} else if viewController.isKindOfClass(StepOne) {
// 1 -> 2
return getStepTwo()
} else {
// 2 -> end of the road
return nil
}
}
// Enables pagination dots
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return 3
}
// This only gets called once, when setViewControllers is called
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return selectedIndex
}
}
假设在 Storyboard 中你有三个视图控制器,你应该从身份检查器中为它们设置标识符,例如 StepZero StepOne StepTwo,当你实例化它们时,你会这样做:
func getStepZero() -> StepZero {
return storyboard!.instantiateViewControllerWithIdentifier("StepZero") as! StepZero
}
func getStepOne() -> StepOne {
return storyboard!.instantiateViewControllerWithIdentifier("StepOne") as! StepOne
}
func getStepTwo() -> StepTwo {
return storyboard!.instantiateViewControllerWithIdentifier("StepTwo") as! StepTwo
}
所选索引是您要从其编号 1 开始的索引。并从 setViewControllers
中的第二个视图控制器调用 getStepOne()
开始。如果您想从视图控制器 3 开始,请使用选定的索引 2 并调用 getStepTwo()
...etc
下载更新的示例:https://mega.nz/#!EQEFhbwS!0yoy5RvAliQNnjRevWo05wPWk7P08e8DVetRZdjg-ro
如下图所示
给出故事板标识符,如下图所示
点击按钮推送新的viewcontroller
var viewControllerObj=self.storyboard!.instantiateViewControllerWithIdentifier("your storyboard identifier")
self.navigationController!.pushViewController(viewControllerObj, animated: true)
这些是我的视图控制器:
我想这样做,以便我可以从中间的一个开始在三个之间滑动。我发现的所有教程都要求您从头开始,并且没有告诉我如何连接我拥有的三个教程。有没有人知道如何执行此操作的分步说明?
如有任何帮助,我们将不胜感激
您可以通过导航控制器连接您的视图控制器。只需 select 您的视图控制器之一 -> 编辑器(在 mac 的顶部栏上) -> 嵌入 -> 导航控制器。
此外,如果您想滑动,可以使用滚动视图,并且只能在视图控制器上使用。内容大小为 3 个视图控制器的滚动视图可以帮助你做同样的事情。 谢谢
首先创建一个名为 PageViewController 的 class,将 UIPageViewController
拖入 storyboard.For 现在让我们从属性检查器将其设置为初始视图控制器。同样来自身份检查员将 PageViewController 设置为 Class.
调用你的三视图控制器,例如 StepZero、StepOne、StepTwo 并在故事板中为它们提供标识符。
现在让我们深入编码,所以在 PageViewController 中应该 subclass UIPageVIewController
:
import UIKit
class PageViewController : UIPageViewController,UIPageViewControllerDataSource {
var selectedIndex = 1
override func viewDidLoad() {
dataSource = self
view.backgroundColor = UIColor.darkGrayColor()
// This is the starting point. Start with step zero.
setViewControllers([getStepOne()], direction: .Forward, animated: false, completion: nil)
}
func getStepZero() -> StepZero {
return storyboard!.instantiateViewControllerWithIdentifier("StepZero") as! StepZero
}
func getStepOne() -> StepOne {
return storyboard!.instantiateViewControllerWithIdentifier("StepOne") as! StepOne
}
func getStepTwo() -> StepTwo {
return storyboard!.instantiateViewControllerWithIdentifier("StepTwo") as! StepTwo
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
if viewController.isKindOfClass(StepTwo) {
// 2 -> 1
return getStepOne()
} else if viewController.isKindOfClass(StepOne) {
// 1 -> 0
return getStepZero()
} else {
// 0 -> end of the road
return nil
}
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
if viewController.isKindOfClass(StepZero) {
// 0 -> 1
return getStepOne()
} else if viewController.isKindOfClass(StepOne) {
// 1 -> 2
return getStepTwo()
} else {
// 2 -> end of the road
return nil
}
}
// Enables pagination dots
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return 3
}
// This only gets called once, when setViewControllers is called
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return selectedIndex
}
}
假设在 Storyboard 中你有三个视图控制器,你应该从身份检查器中为它们设置标识符,例如 StepZero StepOne StepTwo,当你实例化它们时,你会这样做:
func getStepZero() -> StepZero {
return storyboard!.instantiateViewControllerWithIdentifier("StepZero") as! StepZero
}
func getStepOne() -> StepOne {
return storyboard!.instantiateViewControllerWithIdentifier("StepOne") as! StepOne
}
func getStepTwo() -> StepTwo {
return storyboard!.instantiateViewControllerWithIdentifier("StepTwo") as! StepTwo
}
所选索引是您要从其编号 1 开始的索引。并从 setViewControllers
中的第二个视图控制器调用 getStepOne()
开始。如果您想从视图控制器 3 开始,请使用选定的索引 2 并调用 getStepTwo()
...etc
下载更新的示例:https://mega.nz/#!EQEFhbwS!0yoy5RvAliQNnjRevWo05wPWk7P08e8DVetRZdjg-ro
如下图所示
给出故事板标识符,如下图所示
点击按钮推送新的viewcontroller
var viewControllerObj=self.storyboard!.instantiateViewControllerWithIdentifier("your storyboard identifier")
self.navigationController!.pushViewController(viewControllerObj, animated: true)