2017-04-22 8 views
0

버튼을 누를 때마다 이미지를 변경하고 싶습니다.
이미지 이름은 다음과 같습니다.
1 PNG
2. PNG
3. PNG
4. PNG
버튼의 이름 addButton이다.
현재 addButton을 누를 때마다 이미지가 다음과 같이 전환됩니다.
1. png → 2.png → 3.png → 4.png → 1.png → 2.png → 3.png → loop ....
코드는 다음과 같습니다. 당신이 reduceButton을 누를 때
버튼을 누를 때마다 이미지를 변경하고 싶습니다.

class ViewController: UIViewController { 
     var imageNum: Int = 0 
     var imageArray:[UIImage] = [] 
     var stampImage = UIImage(named: "1")! 
     var stampView:UIImageView! 
     @IBOutlet weak var addButton: UIButton! 
     //@IBOutlet weak var reduceButton: UIButton! 

     override func viewDidLoad() { 
       super.viewDidLoad() 
       for i in 1...4 { 
        imageArray.append(UIImage(named: "\(i).png")!) 
       } 
       stampView = UIImageView(image: imageArray[0]) 
       stampView.center = self.view.center 
     } 
     @IBAction func addButtonTapped(_ sender: UIButton) { 

       imageNum = (imageNum + 1) % imageArray.count 
       stampView.image = imageArray[imageNum] 
       stampImage = UIImage(named: "\(imageNum + 1)")! 
     } 
    } 

다음으로, 당신은 다시 하나 개의 이미지를 표시합니다.
예 :
현재 표시되는 이미지가 2.png 인 경우
각 탭마다 다음과 같이 reduceButton을 표시하려고합니다.
2. PNG → 1. PNG → 4. PNG → 3. PNG → → 1. PNG → 4. PNG → 3. PNG의 → 루프 2. PNG ...

내가 코딩의 어떤 종류를해야
그런 경우는?

imageNum = (imageNum - 1) % imageArray.count 

그러나 imageNum 이후

이는 그래서 괄호 안에 표현에 imageArray.count를 추가하는 것이 안전 할 것이다 부정적인 얻을 수 있습니다 :

답변

0

당신은 하나를 빼는 대신에 그와 같은 imageNum에 추가로 동일한 작업을 수행 할 수 있습니다 도를 유지하면서 우리가 부정적인 변수에서 실행 계수 조작을 방지하는 imageArray.count을 추가

imageNum = (imageArray.count + imageNum - 1) % imageArray.count 

: 마지막 행과 같을 것이다 모듈러스 연산의 rhs에 임의의 승수를 더하는 것이 표현식의 결과에 영향을 미치지 않는다는 사실 때문에 모든 숫자 사이의 올바른 사이클링.

+0

오류가 표시된 후 며칠 동안 걱정이되었습니다. 문제없이 작동하기 시작했습니다. 의견을 보내 주셔서 감사합니다. – ginger