从UISwipeGestureRecognizer的功能更新阵列索引

时间:2015-02-27 09:02:54

标签: ios arrays swift

标签视图在刷卡时应显示数组中的下一个项目(就像文本字符串一样)。所以,我创建了初始值为0的数组索引,并在函数内引用了它。 但是,当刷标签时,索引不会更新。很高兴了解如何在刷标签时更新索引。我也尝试将index var放在函数中,但它也没有用。这是代码。感谢。

   import UIKit

     class ViewController: UIViewController 
{
         @IBOutlet var result: UILabel!
         var index: Int = 0
         var items: [String]  = ["apple", "hammer", "cup"]
         let swipeRec = UISwipeGestureRecognizer()

         override func viewDidLoad() {
             super.viewDidLoad()

             swipeRec.addTarget(self, action: "swipedView")
             result.addGestureRecognizer(swipeRec)
             result.userInteractionEnabled = true
         }

          func swipedView () {
             result.text = "\(items[index])"
             index++
         } 
}

3 个答案:

答案 0 :(得分:0)

在viewDidLoad

    var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
    var rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))

    leftSwipe.direction = .Left
    rightSwipe.direction = .Right

    result.addGestureRecognizer(leftSwipe)
    result.addGestureRecognizer(rightSwipe) viewDidLoad
    result.userInteractionEnabled = true


func handleSwipes(sender:UISwipeGestureRecognizer) {
    if (sender.direction == .Left) {
        println("Swipe Left")
        if index > 0 { index -= 1}
    }

    if (sender.direction == .Right) {
        println("Swipe Right")
        if index < (items.count - 1) { index += 1}
    }

    println(items[index])
    result.text = items[index]

}

答案 1 :(得分:0)

这对我有用。在真正的iPhone 4s上测试过。

@IBOutlet var result: UILabel!
var index: Int = 0
var items: [String]  = ["apple", "hammer", "cup"]

override func viewDidLoad() {
    super.viewDidLoad()

    var leftSwipe = UISwipeGestureRecognizer(target: self, action: "swipedView:")
    var rightSwipe = UISwipeGestureRecognizer(target: self, action: "swipedView:")

    leftSwipe.direction = .Left
    rightSwipe.direction = .Right

    result.addGestureRecognizer(leftSwipe)
    result.addGestureRecognizer(rightSwipe)

    result.userInteractionEnabled = true
    result.text = items[index]
}

func swipedView(sender:UISwipeGestureRecognizer!) {
    if (sender.direction == .Left) {
        println("Swipe left")
        if index > 0 {
            index -= 1
        }
    }

    if (sender.direction == .Right) {
        println("Swipe right")
        if index < (items.count - 1) {
            index += 1
        }
    }

    result.text = items[index]
}

当我们将UISwipeGestureRecognizer添加到结果UILabel时,请确保标签具有允许我们制作手势的必要大小,以及是否要滑动标签而不是背景视图。 HMHero提供的解决方案也适用于我。

希望有所帮助。

答案 2 :(得分:0)

原始发布的代码对我有用。请务必指定您希望用户使用的方向。方向默认为向右滑动。