单击按钮时不在Swift中重复单词-IOS

单击按钮时不在Swift中重复单词-IOS,ios,arrays,swift,string,Ios,Arrays,Swift,String,当我在swift中单击按钮时,我怎么能不重复阵列?我试图在不重复的情况下生产水果。我能把这根绳子一个接一个地穿过所有的水果吗?它不必是随机的。我只想在单击按钮并显示最后一个数组“没有任何水果选项”时,每个单词只显示一次 我试图随机化字符串,但结果重复了。我只想让它一个接一个地过去。当我按下屏幕上的按钮时,图像标签上的输出应该一次给我一个水果 即按下按钮“ 输出:“苹果” 再次按下按钮 产出:“香蕉” 依此类推,直到最后一个字符串显示“没有任何水果选项了” 您需要以某种方式跟踪已使用的数组元素。您

当我在swift中单击按钮时,我怎么能不重复阵列?我试图在不重复的情况下生产水果。我能把这根绳子一个接一个地穿过所有的水果吗?它不必是随机的。我只想在单击按钮并显示最后一个数组“没有任何水果选项”时,每个单词只显示一次

我试图随机化字符串,但结果重复了。我只想让它一个接一个地过去。当我按下屏幕上的按钮时,图像标签上的输出应该一次给我一个水果

即按下按钮“ 输出:“苹果”

再次按下按钮 产出:“香蕉”

依此类推,直到最后一个字符串显示“没有任何水果选项了”


您需要以某种方式跟踪已使用的数组元素。您可以通过以下两种方式完成此操作:

  • 保留跟踪数组下一个元素的索引属性
  • 在使用元素时对数组本身进行变异
  • 无论哪种方式,都应该使数组成为实例属性,而不是函数本身中的局部变量

    下面是第二种方法的示例(我更喜欢这种方法,因为我认为它使代码更简单,因为您不需要跟踪下一个索引)

    为了完整起见,这里是第一种方法(添加了一个“previous fruit”按钮):

    ViewController类:UIViewController{
    @IBOUTLE弱var NEXTFRUITBUTON:UIButton!
    @IBVAR水果盒:UILabel!
    让水果=[“苹果”、“香蕉”、“橘子”、“苹果树”、“李子”、“梨”等]。混洗()
    var nextFruit=0
    @iAction func按钮(\发送方:UIButton){
    如果nextFruit0其他{
    返回
    }             
    下一个结果-=1
    fruitbox.text=self.fruit[nextFruit]
    }
    }
    

    如果您不希望水果以随机顺序排列,只需删除
    .shuffled()

    谢谢!成功了!!你知道我如何返回到以前的数组吗?例如,如果我单击按钮,苹果、香蕉、橙色显示出来,但我想回去看香蕉。我该怎么做?在我的第一个示例中,你不能返回,因为用过的水果已从数组中删除;你可以有一个重新启动的按钮在第二个例子中,你可以有一个按钮,在访问数组之前递减
    nextFruit
    ,记住先检查
    nextFruit
    是否为0。你能提供一个例子吗?谢谢!!我在第二个例子中添加了一个以前的水果
    import UIKit
    
    class fruitrandomViewController: UIViewController {
    @IBOutlet weak var nextfruitButton: UIButton!
    @IBOutlet weak var fruitbox: UILabel!
    
    @IBAction func fruitbutton(_ sender: UIButton) {
    
        let array = ["Apple","Banana","Orange","Pinapple", "Plum", "Pear","T"There aren't any fruit options left",]
    
    
        let randomFruitgenerator = Int(arc4random_uniform(UInt32(array.count)))
        fruitbox.text = array[randomFruitgenerator]
    
        }
    }
    
    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]
        }
    }