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: p>
3 Réponses :
Vraisemblablement, vous avez généré un nombre aléatoire une fois et stocké qui aboutit à L'option la plus simple est de faire: p> RandokChoice code>. Mais vous devez générer un nouveau nombre aléatoire chaque fois que le bouton est taraudé.
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
En supposant que OLD code> est défini sur un numéro aléatoire avant que ce sélecteur soit appelé, vous devez initialiser RandokChoice code> à OLD code>, pas 0 code>.
Je ne compile pas que ce code X n'est pas à l'avant moi 90% du temps, en l'affectant à Old code> ou 0 code> ne fera pas la différence si elle est enfin terminée lorsqu'ils ne sont pas égaux
Une fois que Old code> n'est pas 0 code>, votre code affiche uniquement l'image 0 code> et non une valeur aléatoire. Donc, oui, il fait une différence dans la manière dont vous initialisez RandokChoice code>.
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 code> à une valeur aléatoire autre que 0 code>. Sur le bouton Suivant, appuyez sur votre code indiquera uniquement l'image 0 code>. Puis une image aléatoire. Ensuite, seule image 0 code>, etc. Votre code affichera toujours l'image 0 code> au lieu de toute autre image aléatoire lorsque tout le code code> n'est pas 0 < / code>. Peu importe la toute première valeur du ancien code> est.
Oui, mais imaginez que c'est var aluminchoice = ancien code> 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 code> lorsque OLD code> est autre chose que 0 code>.
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
}
L'utilisation de Dispatchqueue code> 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 code>? Utilisez img.count code>.