[Résolu] Noms de UIView dans un Array
busterTheo
Membre
Bonjour,
j'ai tout essayé, j'ai fouiné grave sur le net, et je dois pas être doué, car je n'y parviens pas.
Voilà , en gros, comment stocker des noms de UIImageViews (mais aussi de UIScrollViews dans un autre array) dans un array, afin de pouvoir ensuite faire des trucs genre ?
J'essaie de transformer un string stocké en nom de UIView...
Les tags sont sur les UIImageViews dans le storyBoard
func calibrerImage(tag: Int) {
// Cette ligne ?????????
leScroll = tabloScrollPhotosCalibrationViews[tag-1] as UIScrollView
leScroll.delegate = self
leScroll.frame = CGRectMake(0, 0, mainScreenSize.width, mainScreenSize.height)
leScroll.userInteractionEnabled = false
self.view.addSubview(leScroll)
// Je ne met pas le reste du code pour les UIImageViews ) c'est pareil
}
Voilà comment je stocke le tableau, au préalable - Il ne changera pas.
var tabloPatientsImageViews = [String]()
var tabloPhotosCalibrationViews = [String]()
var tabloScrollPhotosCalibrationViews = [String]()
tabloPatientsImageViews = ["frontalPatientImageView","BpnmbPatientImageView","CfnmsPatientImageView","DpnmsPatientImageView","EaiETsPatientImageView"]
tabloPhotosCalibrationViews = ["frontalPatientCalibrationImageView","BpnmbPatientCalibrationImageView","CfnmsPatientCalibrationImageView","DpnmsPatientCalibrationImageView","EaiETsPatientCalibrationImageView"]
tabloScrollPhotosCalibrationViews = ["myScrollfrontalPatientCalibrationImageView","myScrollBpnmbPatientCalibrationImageView","myScrollCfnmsPatientCalibrationImageView","myScrollDpnmsPatientCalibrationImageView","myScrollEaiETsPatientCalibrationImageView"]
Merci d'avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais pourquoi tu stockes des String ? C'est un tableau de UIView que tu veux, pourquoi tu ne stockes pas ces UIView du coup ?
Y'a des bases de la prog à revoir là , une variable n'est qu'un nom dans ton code qui fait référence à un objet, et on ne référence pas une variable avec une string. Une string c'est juste du texte. Tu ne peux pas utiliser une string / du texte en un nom de variable (nom qui est abstrait et sera remplacé par des adresses et des registres à la compilation, etc. rien à voir avec du texte en dur.
Ton problème est sans doute dans le vocabulaire. Tu dis "je veux stocker des noms de UIImageViews" ce qui n'a pas de sens. une UIImageView n'a pas de nom. A la limite tu as une (ou plusieurs) variable(s) qui pointe(nt) vers cette UIImageView, mais de là à dire que c'est "le nom de l'UIImageView" ça n'a rien à voir. C'est comme si tu voulais parler d'un objet et que tu le montrais avec ton doigt. Tu ne parles pas du doigt, et y'a même plusieurs personnes qui peuvent montrer l'objet du doigt pour dire "c'est de ça que je parle", mais ça ne fait pas de cet objet le doigt, on ne peut pas dire "le nom de cet objet c'est mon doigt", ça n'a aucun sens. Vraiment aucun.
Toi ce que tu veux ce n'est pas "stocker des noms de UIImageView", mais "stocker des UIImageView". Donc faut tout simplement faire ça, c'est tout. Tu te fais des tableaux de UIImageView et puis c'est tout, pourquoi chercher compliqué et tordu et insensé ? (Bon et en + tu dis "le tableau ne changera pas" du coup pourquoi tu avais mis des "var" et pas des "let" si tes tableaux ne changent pas ?)
Il suffit donc de créer un tableau de UIScrollView ou de UIImageView ou de UIView (et pas un tableau de chaà®nes de caractères contenant des textes qui n'ont aucun sens particulier au runtime une fois le code compilé)
Merci Alligator pour ta réponse.
Je vois que je t'ai faché. Désolé.
Mais tu as raison, ce sont bien des Views que je veux stocker en tableaux, et ce qui distingue une View d'une autre, c'est, dans ce cas, le nom (enfin, celui qui pointe vers elle), d'où ma confusion. Il est vrai que je n'arrive pas à me familiariser avec cette histoire de pointeur, et que je fais des raccourcis sémantiques.
Je note par contre ton code, car j'aurai souvent besoin de faire ce genre de truc, et je n'avais pas trouvé cette syntaxe (sorry).
C'est top
En tout cas, en attendant, j'avais opté pour une autre solution, plus simple.
Mais quand même, j'ai une question :
Imaginons que j'ai :
Un tableau de fruits
Un tableau de légumes
Plusieurs autres tableaux similaires,
puis
un tableau générique, dans lequel je devrait stoker les noms de ces tableaux.
Si j'ai bien compris tes précisions, je devrais plutôt faire cela (donc sans guillemets)
Le but étant ensuite de pouvoir faire
Je sens que je vais encore t'énerver, , mais j'ai souvent eu l'occasion (en actionScript, ou en javaScript), de faire des variables de variables, je ne sais pas si je m'exprime bien, mais en gros, des noms de variables qui se fabriquent à partir d'une liste de noms de variables (donc en string).
Voilà , merci encore.
Ne crois-tu pas qu'Ali sera énervé avec un nom de constante "tabloDesLégumes"?
1) c'est inefficace: un object chaà®ne est bien plus lourd qu'une simple référence.
2) pendant la frappe, Xcode ne peut pas te proposer de nom de variable, et ne peut pas vérifier son existence.
3) c'est résolu à l'exécution et non à la compilation. De fait, ton code peut très bien compiler, mais ne pas fonctionner. Et il te faudra absolument passer dans le code en question pour t'en rendre compte.
Ben non, c'est lui qui met des let.
Pis, ça n'est qu'un exemple bidon, bien sûr que si je suis amené à faire cela, je créerais des variables et non pas des constantes.
Mais merci quand même pour ta remarque.
Le problème ne vient pas du "let" ou du "var" mais des accents dans les noms de variables.
On sait que maintenant on peut tout mettre en nom de variable mais c'est une mauvaise habitude selon moi
Pour éviter de l'énerver, fais des exemples avec de la VIANDE !
Et évite ces maudites minuscules accentuées dans le nom des variables. Et je ne parle même pas de l'unicode dans le nom. C'est n'importe quoi.
C'est rigolo 30 secondes sur un blog de geeks, mais c'est l'horreur dans un vrai développement.
EDIT : c'est moins marrant quand le forum filtre l'unicode. Je te montre avec une copie d'écran :
Désolé pour les accents dans les noms de variables. Je vous rassure, je n'en met jamais - Sans blague.
Là , j'ai tapé tout ça à l'arrache pour la question.
ça veut dire que l'on ne peut pas stocker des noms de variables dans un tableau (comme expliqué plus haut), et les réutiliser ?
Encore merci pour vos précieux commentaires.
Tu peux stocker des noms de variables dans un tableau mais la question n'est pas là .
LA question est plutôt: "Dans quel but souhaites-tu stocker des noms de variables plutôt que les variables elles-mêmes dans une tableau?"
En se référant à mon exemple (en début de post), imagine que je sois amené à choisir un nombre aléatoire, qui me donnera un choix dans mon tableau de tableaux - Ce choix, sera donc, un fruit, un légume ou de la viande (pour Ali).
Puis ensuite un autre nombre, qui sélectionnera le fruit parmi les fruits, ou le légume parmi les légumes, etc.
Tu peux (je ne sais pas si ça répondra à ta question) avoir un tableau (appelons le globalArray) qui contient plusieurs tableaux (vegetablesArray, fruitsArray, etc...)
Dans ce cas, tu traites ton problème directement avec les objets et non avec le nom des variables.
ouais, c'est aussi comme ça que je le vois - Merci pour votre aide.