Я тасую свой массив.
Затем я присваиваю значение каждому из индексов в массиве.
Затем я выполняю действие для каждого индекса. В этом случае цвет ячейки в массиве становится красным. Несмотря на то, что я присвоил разные значения каждому из индексов в перетасованном массиве, я все еще получаю повторение, и иногда одна и та же ячейка остается красной в течение более одной секунды подряд. Почему это так, как будто массив постоянно перетасовывается между операторами If? Код ниже.
Я отредактировал код, чтобы показать весь viewController.
import UIKit
class ViewController: UIViewController {
@IBOutlet var theview: UIView!
@IBOutlet weak var timerx: UILabel!
@IBOutlet weak var square1: UIImageView!
@IBOutlet weak var square2: UIImageView!
@IBOutlet weak var square3: UIImageView!
@IBOutlet weak var square4: UIImageView!
@IBOutlet weak var square5: UIImageView!
@IBOutlet weak var square6: UIImageView!
@IBOutlet weak var square7: UIImageView!
@IBOutlet weak var square8: UIImageView!
@IBOutlet weak var square9: UIImageView!
var viewArray = [UIImageView]()
var timer:Timer?
var seconds = 11
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timeElapsed), userInfo: nil, repeats: true)
}
@objc func timeElapsed() {
seconds -= 1
timerx.text = "\(seconds)"
if seconds <= 0 {
timer?.invalidate()
}
viewArray = [square1,square2,square3,square4,square5,square6,square7,square8,square9]
func allcellsYellow(){
square1.backgroundColor = UIColor.systemYellow
square2.backgroundColor = UIColor.systemYellow
square3.backgroundColor = UIColor.systemYellow
square4.backgroundColor = UIColor.systemYellow
square5.backgroundColor = UIColor.systemYellow
square6.backgroundColor = UIColor.systemYellow
square7.backgroundColor = UIColor.systemYellow
square8.backgroundColor = UIColor.systemYellow
square9.backgroundColor = UIColor.systemYellow
}
func allcellsRed(){
square1.backgroundColor = UIColor.red
square2.backgroundColor = UIColor.red
square3.backgroundColor = UIColor.red
square4.backgroundColor = UIColor.red
square5.backgroundColor = UIColor.red
square6.backgroundColor = UIColor.red
square7.backgroundColor = UIColor.red
square8.backgroundColor = UIColor.red
square9.backgroundColor = UIColor.red
}
viewArray.shuffle()
let randomcell = (viewArray[0])
let randomcell2 = (viewArray[1])
let randomcell3 = (viewArray[2])
let randomcell4 = (viewArray[3])
let randomcell5 = (viewArray[4])
let randomcell6 = (viewArray[5])
let randomcell7 = (viewArray[6])
let randomcell8 = (viewArray[7])
let randomcell9 = (viewArray[8])
if seconds == 10 {
randomcell.backgroundColor = UIColor.red
}
if seconds < 10 {
allcellsYellow()
}
if seconds == 9 {
randomcell2.backgroundColor = UIColor.red
}
if seconds < 9 {
allcellsYellow()
}
if seconds == 8 {
randomcell3.backgroundColor = UIColor.red
}
if seconds < 8 {
allcellsYellow()
}
if seconds == 7 {
randomcell4.backgroundColor = UIColor.red
}
if seconds < 7 {
allcellsYellow()
}
if seconds == 6 {
randomcell5.backgroundColor = UIColor.red
}
if seconds < 6 {
allcellsYellow()
}
if seconds == 5 {
randomcell6.backgroundColor = UIColor.red
}
if seconds < 5 {
allcellsYellow()
}
if seconds == 4 {
randomcell7.backgroundColor = UIColor.red
}
if seconds < 4 {
allcellsYellow()
}
if seconds == 3 {
randomcell8.backgroundColor = UIColor.red
}
if seconds < 3 {
allcellsYellow()
}
if seconds == 2 {
randomcell9.backgroundColor = UIColor.red
}
if seconds < 2 {
allcellsYellow()
}
if seconds == 1 {
randomcell.backgroundColor = UIColor.red
}
if seconds < 1 {
allcellsYellow()
}
if seconds == 0 {
allcellsRed()
}