Вам нужно как-то отслеживать элементы массива, которые вы уже использовали. Это можно сделать несколькими способами:
- Сохранить свойство индекса, которое отслеживает следующий элемент массива
- Изменять сам массив по мере использования элементов
В любом случае, вы должны сделать массив свойством экземпляра, а не локальной переменной в самой функции.
Вот пример второго подхода (я предпочитаю это, так как я думаю, что он делает код немного проще, так как вам не нужно отслеживать следующий индекс).
class fruitrandomViewController: UIViewController {
@IBOutlet weak var nextfruitButton: UIButton!
@IBOutlet weak var fruitbox: UILabel!
var fruit = ["Apple","Banana","Orange","Pinapple", "Plum", "Pear",].shuffled()
@IBAction func fruitbutton(_ sender: UIButton) {
if fruit.isEmpty {
fruitbox.text = "There's no more fruit left"
} else {
fruitbox.text = self.fruit[0]
self.fruit.remove(at:0)
}
}
}
Для полноты, вот первый подход (с добавленной кнопкой «предыдущий фрукт»):
class fruitrandomViewController: UIViewController {
@IBOutlet weak var nextfruitButton: UIButton!
@IBOutlet weak var fruitbox: UILabel!
let fruit = ["Apple","Banana","Orange","Pinapple", "Plum", "Pear",].shuffled()
var nextFruit = 0
@IBAction func fruitbutton(_ sender: UIButton) {
if nextFruit < fruit.count {
fruitbox.text = self.fruit[nextFruit]
nextFruit += 1
} else {
fruitbox.text = "There's no more fruit left"
}
}
@IBAction func previousFruitButton(_ sender: UIButton) {
guard nextFruit > 0 else {
return
}
nextFruit -= 1
fruitbox.text = self.fruit[nextFruit]
}
}
Если вы не хотите, чтобы фрукты были в случайном порядке, просто удалите .shuffled()