0
votes

Comment obtenir un tableau d'uiimage différent à chaque fois que je clique sur un bouton?

Donc, fondamentalement, j'ai un bouton et j'ai besoin de mon uiimage pour changer de manière aléatoire vers l'une des trois images de mon tableau à chaque fois que je clique sur le bouton. À l'heure actuelle, que se passe-t-il lorsque je clique sur le bouton, est-ce simplement choisi une image aléatoire, puis lorsque je clique à nouveau, l'image reste la même.

Voici ce que j'ai écrit à l'intérieur de mon bouton: xxx


0 commentaires

3 Réponses :


0
votes

Vraisemblablement, vous avez généré un nombre aléatoire une fois et stocké qui aboutit à RandokChoice . Mais vous devez générer un nouveau nombre aléatoire chaque fois que le bouton est taraudé.

L'option la plus simple est de faire: xxx


0 commentaires

0
votes

Vous pouvez essayer ceci pour vous garantir que chaque fois que vous cliquez sur le bouton, vous obtiendrez une nouvelle image aléatoire non similaire xxx


7 commentaires

En supposant que OLD est défini sur un numéro aléatoire avant que ce sélecteur soit appelé, vous devez initialiser RandokChoice à OLD , pas 0 .


Je ne compile pas que ce code X n'est pas à l'avant moi 90% du temps, en l'affectant à Old ou 0 ne fera pas la différence si elle est enfin terminée lorsqu'ils ne sont pas égaux


Une fois que Old n'est pas 0 , votre code affiche uniquement l'image 0 et non une valeur aléatoire. Donc, oui, il fait une différence dans la manière dont vous initialisez RandokChoice .


Cela dépend-il pas d'hypothèse de savoir la valeur aléatoire? Je suppose que nous ne devrions pas dépendre de toute attente au-delà de cela


Cela dépend seulement de votre propre code. À un moment donné, vous finirez par définir ancien à une valeur aléatoire autre que 0 . Sur le bouton Suivant, appuyez sur votre code indiquera uniquement l'image 0 . Puis une image aléatoire. Ensuite, seule image 0 , etc. Votre code affichera toujours l'image 0 au lieu de toute autre image aléatoire lorsque tout le code n'est pas 0 < / code>. Peu importe la toute première valeur du ancien est.


Oui, mais imaginez que c'est var aluminchoice = ancien ne peut-il pas arriver du hasard lui-même?


Avec ce petit changement, il garantit que la boucle sera entrée au moins une fois et un nouveau nombre aléatoire sera généré. C'est ce que vous voulez éviter le problème de toujours retourner 0 lorsque OLD est autre chose que 0 .



0
votes

Essayez ceci et cela fonctionne bien pour moi:

//Have an array of the name for your image like
let img = ["img1","img2","img3","img4"]

@IBAction func randomImageClick(_ sender: Any){

  self.imageView.image = UIImage(named: img[Int.random(in: img.count)]) // Look out for range of index. its size must be equal your array count, otherwise it'll get index out of range
}


2 commentaires

L'utilisation de Dispatchqueue ne sera pas nécessaire car les gestionnaires de boutons sont toujours appelés à la file d'attente principale.


Pourquoi le codage de la plage de 0. <4 ? Utilisez img.count .