前提・実現したいこと
スライドショーアプリがなかなか完成しません...
シュミレーターで操作していると、backImageを二回押すと何も反応しなくなります。他にも、backImageやnextImageを押していたら勝手にスライドショーが始まってしまったりします。
お手上げ状態です。どうしたらまともなスライドショーが作れますか?
発生している問題・エラーメッセージ
slideshow[22483:1517248] [LayoutConstraints] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want.
該当のソースコード
import UIKit class ViewController: UIViewController { @IBOutlet weak var UIImageView: UIImageView! @IBOutlet weak var backImage: UIButton! @IBOutlet weak var nextImage: UIButton! var imageIndex = 0 var tapCount = 1 var timer: Timer! let images = [UIImage(named: "umi1.jpeg"),UIImage(named: "umi2.jpeg"),UIImage(named: "umi3.jpeg")] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. let imageView = images[0] UIImageView.image = imageView } override func didReceiveMemoryWarning(){ super.didReceiveMemoryWarning() } @IBAction func backImage(_ sender: Any) { if imageIndex == 2{ imageIndex = 1 }else if imageIndex == 1{ imageIndex = 0 }else{ imageIndex = 2 } UIImageView.image = images[imageIndex] print(imageIndex) } @IBAction func nextImage(_ sender: Any) { if imageIndex == 2{ imageIndex = 0 }else{ imageIndex += 1 } UIImageView.image = images[imageIndex] print(imageIndex) } @objc func onTimer(_ timer: Timer){ if imageIndex == 2{ imageIndex = 0 }else{ imageIndex += 1 } UIImageView.image = images[imageIndex] } @IBAction func startStop(_ sender: Any) { tapCount += 1 if tapCount % 2 == 0{ self.timer=Timer.scheduledTimer(timeInterval: 2,target: self,selector: #selector(onTimer(_:)),userInfo: nil, repeats: true) backImage.isEnabled = true nextImage.isEnabled = true }else{ self.timer.invalidate() backImage.isEnabled = false nextImage.isEnabled = false } } override func prepare(for segue: UIStoryboardSegue, sender: Any?){ let resultViewController:ResultViewController = segue.destination as! ResultViewController resultViewController.image = images[imageIndex] } @IBAction func unwind(_ segue: UIStoryboardSegue){ } }
試したこと
backImageを色々と工夫してみました。
補足情報(FW/ツールのバージョンなど)
今日一日考えていますがわかりません...
・backImageやnextImageを押していたら勝手にスライドショーが始まるのは、たぶん開始・終了ボタンをコピペしてbackImageやnextImageを作ったのでは?
・エラーメッセージは Auto Layout の制約に関するものなので、Storyboard を見直しましょう。
・変数名の付け方がいけてないので、動くことは動いても、ちょっと見る気が削がれますね…。
回答1件
あなたの回答
tips
プレビュー