Déplacement des UIButtons
Bonjour
Dans mon projet, je souhaite que lorsque j'appuie sur un bouton, il déplace "monBouton" vers une position que j'ai définie dans mon code. J'utilise donc ce morceau de code :
Le problème est que je n'ai pas qu'un bouton à déplacer mais un peu plus de dix et les lignes de code commences à se répéter... /sad.png' class='bbc_emoticon' alt=':(' /> Je joins l'interface de mon projet pour vous en faire une petite idée.
Quelqu'un aurait-il une idée de comment réduire ces lignes ?
Merci /smile.png' class='bbc_emoticon' alt=':)' />
Dans mon projet, je souhaite que lorsque j'appuie sur un bouton, il déplace "monBouton" vers une position que j'ai définie dans mon code. J'utilise donc ce morceau de code :
<br />
bool changement;<br />
- (IBAction)changerLaPosition:(id)sender {<br />
if (!changement) {<br />
self.monBouton.frame = CGRectMake(135, 120, 50, 50);<br />
changement = true;<br />
}<br />
else {<br />
self.monBouton.frame = CGRectMake(135, 250, 50, 50);<br />
changement = false;<br />
}<br />
}<br />
Le problème est que je n'ai pas qu'un bouton à déplacer mais un peu plus de dix et les lignes de code commences à se répéter... /sad.png' class='bbc_emoticon' alt=':(' /> Je joins l'interface de mon projet pour vous en faire une petite idée.
Quelqu'un aurait-il une idée de comment réduire ces lignes ?
Merci /smile.png' class='bbc_emoticon' alt=':)' />
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
(Là si tu vois pas la solution c'est qd mm qu'il te manque de sacré bases...)
PS : Arrête de suite ta manie d'utiliser des variables globales comme "changement", ce n'est pas la bonne méthode est fortement déconseillé. Utilises plutôt par exemple l'état selected de ton sender (que tu bascules à chaque fois). Ou utilise un UISwitch qui va te permettre d'avoir un interrupteur qui va basculer entre deux états "on" et "off".
Non je ne peux pas calculer la positions de mes boutons. X et Y ne changent pas tout le temps mais il peut arriver que X tout seul change, Y tout seul change et X et Y changent.
En fait j'ai mis une action dans mon code mais c'est en fait cette méthode qui fera changer mes boutons de place :
J'ai utilisé une variable globale parce que dans la méthode ci-dessus, je n'ai pas de sender. Mais oui je vais arrêter tout de suite cette manie et comme tu dis, je vais utiliser un UISwitch dans les cas où je n'aurais pas de sender ! /smile.png' class='bbc_emoticon' alt=':)' />
Juste une petite question : À quoi servent les boolean si je doit éviter des les utiliser ?
Les boolean, c'est très bien. Les variables globales, c'est le mal (encore + en environnement MultiThreadé) et surtout souvent utilisé à mauvais escient. En général on peut faire autrement ; par exemple dans ton cas tu peux te baser sur la valeur de toInterfaceOrientation pour savoir si tu te trouves dans un cas (Portrait) ou l'autre (Paysage), plutôt que d'avoir une variable globale "changement".
Sinon pour ton problème, il te suffit de prévoir un tableau de CGPoint que tu stockes qqpart (dans une propriété de ton UIViewController typiquement). Et comme ça tu n'as plus qu'à boucler sur tous tes boutons pour modifier leur frame avec comme valeur de X et Y la valeur du i-ème CGPoint de ton tableau.
Pourrais-tu juste vérifier si mon code est juste ?
J'ai utiliser des CGRectMake parce que mes boutons doivent changer de taille à un moment, mais je ne les aient pas fait changer dans mon exemple.
Oui j'utilise toujours la valeur "toInterfaceOrientation" lorsque j'utilise le mode portrait et paysage.
J'utiliserais à la rigueur le tag des UIButtons plutôt qu'un index i pour faire correspondre le bouton et son CGRect, histoire de ne pas me baser sur l'ordre des UIButtons dans ton IBOutletCollection car comme je l'ai déjà mentionné je ne suis pas sûr que cet ordre soit garanti. Alors qu'en affectant des tags dans IB à chacun de tes boutons et en utilisant ce tag, tu es sûr d'utiliser le bon élément de ton tableau.
Merci !
Ha oui j'allais justement poser une question sur l'ordre des "[font=helvetica, arial, sans-serif] IBOutletCollection". Effectivement je pourrais utiliser les tags ce qui me permettrai d'utiliser le bon élément de mon tableau.[/font]
[font=helvetica, arial, sans-serif]Merci beaucoup pour tes réponses ![/font]