2017-10-15 3 views
-2

Vous cherchez à utiliser une fonction pour vérifier le "nombre" et retourner le bon UIImageView, au lieu d'avoir à faire une longue déclaration if. Voici le code que je suis actuellement en utilisant:Comment retourner le bon UIImageView

randNumber = Int(arc4random_uniform(UInt32(array.count)))  

      if number == 1{ 
      image1.image = UIImage(named: array[randNumber]) 
      number += 1 
     } else if number == 2{ 
      image2.image = UIImage(named: array[randNumber]) 
      number += 1 
     } else if number == 3{ 
      image3.image = UIImage(named: array[randNumber]) 
      number += 1 
     } else if number == 4{ 
      image4.image = UIImage(named: array[randNumber]) 
      number += 1 
     } 

Si le nombre est 3, puis être retourné image3 sera

Quelqu'un a des suggestions?

+0

Vous voulez raccourcir le code? – Sweeper

Répondre

1

Voici un moyen de raccourcir votre code.

Faire un tableau de vos vues d'image:

let imageViewArray = [image1, image2, image3, image4] 

Générez votre nombre aléatoire:

randNumber = Int(arc4random_uniform(UInt32(array.count))) 

vient ici la magie. Étant donné que la correspondance entre la valeur de number et votre point de vue de l'image à utiliser est comme ceci:

number ImageView 
1   image1 
2   image2 
3   image3 
4   image4 

et la correspondance des indices du tableau avec vos vues d'image est comme ceci:

index  ImageView 
0   image1 
1   image2 
2   image3 
3   image4 

Nous avons juste besoin pour en soustraire un de number pour le faire correspondre aux indices de tableau. Cela signifie que nous pouvons utiliser cette expression pour accéder à la vue de l'image que nous voulons:

imageViewArray[number - 1] 

La ligne entière sera comme ceci:

imageViewArray[number - 1].image = UIImage(named: array[randNumber]) 
+0

Merci beaucoup pour l'aide, c'est ce que je cherchais. J'ai essayé ceci avant et quand coller votre code j'obtiens la même erreur: "La valeur de type 'String' n'a aucun membre 'image'" – Gjeruldsen

+0

Êtes vous sûr que vous avez déclaré 'image1' et d'autres vues d'image comme' UIImageView'? @Gjeruldsen – Sweeper

+0

@IBOutlet faible var image1: UIImageView! – Gjeruldsen