2017-05-18 5 views
0

초보자는 Swift 3 - UISwipe 제스처를 배우지 만 배열을 사용하면 작동하지 않습니다.스위프트 3 - 배열을 사용하여 레이블을 바꾸려면 왼쪽으로 스 와이프합니다.

내 코드.

레이블을 "hello1"에서 "hello2"로만 변경 한 다음 왼쪽으로 다시 스 와이프하여 "hello3"으로 코드를 작성할 수 있습니다. 또한 "hello3"에서 "hello2"및 "hello1"까지 오른쪽으로 다시 스 와이프합니다. 또는 첫 번째 루프로 되돌아갑니다.

감사합니다.

class ChangeLabelViewController: UIViewController { 

var helloArray = ["Hello1", "Hello2", "Hello3"] 
var currentArrayIndex = 0 


@IBOutlet weak var helloLabel: UILabel! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(ChangeLabelViewController.handleSwipes(sender:))) 

    let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(ChangeLabelViewController.handleSwipes(sender:))) 

    leftSwipe.direction = .left 
    rightSwipe.direction = .right 

    view.addGestureRecognizer(leftSwipe) 
    view.addGestureRecognizer(rightSwipe) 

    helloLabel.text = helloArray[currentArrayIndex] 
} 

func handleSwipes(sender: UISwipeGestureRecognizer) { 

    if sender.direction == .left { 
     helloLabel.text = helloArray[currentArrayIndex + 1] 


    } 

    if sender.direction == .right { 

    } 
} 

답변

0

이 시도 :

if sender.direction == .left { 
    currentArrayIndex = (currentArrayIndex + 1) % 3 
    helloLabel.text = helloArray[currentArrayIndex] 
} 

if sender.direction == .right { 
    currentArrayIndex = (currentArrayIndex + 3 - 1) % 3 //if uInt 
    helloLabel.text = helloArray[currentArrayIndex] 
} 
+0

감사 simalone을. 이것은 내가 배운 훌륭한 팁과 튜토리얼입니다. 나는 코드를 더 소화 할 것이다. –

+0

희망이 도움이 될 수 있습니다! :) @ JimmyWong – simalone

0

당신이 코드 아래 함께 할도 수,

func handleSwipes(sender: UISwipeGestureRecognizer) { 

    if sender.direction == .left { 

     if(currentArrayIndex < helloArray.count - 1) 
     { 
      currentArrayIndex += 1 
      let indexPath = IndexPath(item: currentArrayIndex, section: 0) 
      helloLabel.text = helloArray[indexPath.row] 
     } 
    } 

    if sender.direction == .right { 

     if(currentArrayIndex > 0) 
     { 
      currentArrayIndex -= 1 
      if currentArrayIndex == -1 
      { 
       currentArrayIndex = 0 
       let indexPath = IndexPath(item: currentArrayIndex, section: 0) 
       helloLabel.text = helloArray[indexPath.row] 
      } 
      else { 
       let indexPath = IndexPath(item: currentArrayIndex, section: 0) 
       helloLabel.text = helloArray[indexPath.row] 
      } 
     } 

    } 
+0

나는 마지막 배열까지 실행될 때 코드를 따르고, "범위를 벗어난 색인"때문에 응용 프로그램이 다운되었습니다. 가이드에 감사드립니다. –

+0

오크 .. 이제 확인할 수 있습니다 –

+0

감사합니다. 코드가 완벽하게 작동했습니다. 나는 그것을 이해하려고 노력할 것이다. –