2

我有一个带有三个选项卡的选项卡式应用程序,我想使用滑动手势识别器在它们之间进行转换。

  1. 我将一个滑动手势识别器从对象库拖放到第一个视图和一个到第三个视图。我在第二个视图上添加了两个,所以我可以左右滑动。
  2. 我将 Swipe 更改为 Attribute Inspector,以便它可以根据需要向右或向左滑动
  3. 使用助手编辑器,我使用 Control+Drag 为正确的 ViewController.swift 文件创建操作。

我还应该怎么做才能使刷卡起作用?我在网上找到的所有指南都在 Objective-C 中。有谁知道如何在 Swift 中完成这些事件?

主要故事板

FirstViewController.swift 文件

4

2 回答 2

0

您必须应用自定义视图控制器转换。否则,您的选项卡转换既不是动画的(默认情况下选项卡切换没有动画)也不是交互式的(您无法用手势控制速度)。

Colin Eberhardt 的VC Transitions Library是一个很好的起点。它在 Objective-C 中,但你可以在 Swift 中使用它。

只是一个警告:自定义视图控制器转换是 iOS 7 或 8 的不成熟部分。如果在自定义视图仍在运行时启动另一个视图转换,UI 或多或少会锁定。它很容易发生:用户在转换结束之前按下另一个选项卡,您的代码切换选项卡并同时按下视图控制器,用户在转换期间设法按下一个按钮以打开另一个视图控制器等。

于 2015-04-22T19:58:41.010 回答
0


编辑:我已经向 github 添加了一个示例项目,它完全可以工作。随意复制它或炒它。



您无需将它们添加到故事板中。首先将此代码添加到您的初始化程序(在大多数情况下为 viewDidLoad):

    var swipeGesture = UISwipeGestureRecognizer(target: self, action: "SwipeToNextViewController:")
    swipeGesture.direction = UISwipeGestureRecognizerDirection.Left
    view.addGestureRecognizer(swipeGesture) 

    var swipeGestureReverse = UISwipeGestureRecognizer(target: self, action: "SwipeToPreviousViewController:")
    swipeGestureReverse.direction = UISwipeGestureRecognizerDirection.Right
    view.addGestureRecognizer(swipeGestureReverse)

现在你的 viewController 有了手势,如果你向左滑动就会调用 SwipeToNextViewController(),向右滑动会调用 SwipeToPreviousViewController()。为与手势相关的两个函数编写代码:

func SwipeToNextViewController(gestureRecognizer:UISwipeGestureRecognizer)
{
    performSegueWithIdentifier("next", sender: self)
}

func SwipeToPreviousViewController(gestureRecognizer:UISwipeGestureRecognizer)
{
    performSegueWithIdentifier("previous", sender: self)
}

当视图向左或向右滑动时,将调用这两个函数。在其中添加您的代码(在本例中为 performSegue),您可以转到另一个 viewController。

希望能帮助到你 :)

于 2015-04-24T04:50:38.440 回答