Bon, en fait je me rends compte que j'ai des soucis déjà avant... Je sais pas si j'arrive à poser mon problème clairement tellement je nage, ou si la question est trop basique, mais je vais essayer :
J'ai une TabBar avec 4 vues. Jusque là tout va bien (au moins ça). Ensuite, j'aimerai : partir d'une de ces vues avoir un bouton qui charge une autre vue. Avant de le faire au hasard sur plusieurs, j'ai testé avec une seule et ça ne marche pas.
J'ai une erreur "warning :passing argument 1 of 'setMaVue' from distinct Ojective-C type. Voici mon code pour le bouton :
Autre chose de bizarre : la fonction du bouton apparaissait sur le main.xib. Maintenant j'ai bricolé et la méthode est apparue, mais je ne suis pas trop sûr du côté des liens.
J'ai vu qu'il y avait quelque chose similaire sur le forum : http://www.osx-dev.com/index.php?topic=3259.0 et j'ai tenté de voir dans la doc Apple, mais une petite piste serai la bienvenue.
Pour que ce code soit valide, il faut que la property soit définie ainsi : @property(retain) TravailView01 * travailView01; et que travailView01 hérite de UIViewController Est-ce le cas ?
Pour qu'il soit efficace, il faut faire quelque chose de la vue de travailView01, et là qu'as-tu prévu ?
J'avais effectivement commencé par @property (retain, nonatomic) TravailView01 *travailView01; et puis j'avais essayé de mettre @property (retain, nonatomic) UIView *travailView01; Ce changement a supprimé l'erreur... mais pas encore de changement de vue. (TravailVue01 hérite de UIViewController).
Au niveau de la vue, j'avais mis les mêmes noms (Travail01.xib), je viens de le changer pour éviter des confusion (Tr01.xib). J'ai changé sa classe en TravailView01, mais c'est tout. (j'avais également changé celle de la vue qui contient le bouton (TravailView avec TravailViewController) pour que j'accède à l'action dans le File's Owner.
Oui les deux sont possibles, on peut définir soit une UIView soit un UIViewController, mais c'est la construction dans un xib secondaire initWithNibName qui fait passer par un UIViewController. Pour une UIView on la rajouterait dans le xib principal avec un IBOutlet.
Pour changer la vue brutalement, tu peux faire [self.view addSubview:travailView01.view]; Pour faire une transition, tu peux prendre modèle sur la page du Tuto des transitions :Transitions Standards push, reveal, moveIn, fade
Bon, j'ai pas encore tout compris, mais je vais prendre un peu de temps. (la ligne de code que j'ai rajouté plante)
Quelle méthode me conseilles-tu parmi tes deux possibilités citées. Sachant qu'à partir de cette vue (Tr01), je vais accéder à une autre sous-vue (Tr01a) ?
[EDIT] La console me confirme que c'est une question d'Outlet
Les xib séparés sont préférables lorsque cela s'étoffe comme cela semble être le cas dans ton appli, c'est plus modulable, et moins confus. Donc utilise plutôt les UIViewController.
C'est marrant comme un petit projet qui paraissait si simple au départ...
En tous cas, encore merci pour cette aide. J'apprend énormément. Même si je me rends bien compte que je suis encore loin, petit à petit ces lignes ont un sens et j'ai envie d'en savoir toujours plus.
Bonne nouvelle. Ma vue se charge enfin. Mais cette fois, c'est le random qui n'est pas accepté.
Que les programmeurs me pardonne pour cette présentation qui est sûrement très loin de ce qu'il faille faire, mais j'ai pas trouvé.
Normal, le générateur de nombre aléatoire n'est pas initialisé. Donc random() fournit une suite de nombres pseudo-aléatoires... mais toujours les mêmes à chaque relancement de l'appli. Faut utiliser srandom pour initialiser le générateur aléatoire, en lui passant une valeur toujours différente (genre en général on lui passe time(NULL), que tu peux trouver dans <time.h>)
Donc appeller au moins une fois [tt]srandom(time(NULL))[/tt] avant d'appeler random pour la première fois si tu veux avoir des valeurs aléatoires différentes entre chaque run.
Réponses
case 0 :
// charger la vue 0
break;
case 1 :
// charger la vue 1
break;
case ....
}
ou utiliser une NSArray de viewcontrollers si ils sont déjà créés
array[random()%nombreDeViewController]
Je vais voir si j'arrive à intégrer ça, merci.
Les surprises, t'est p't être pas encore au bout !!
Bon il est quand même d'usage de saluer les nouveaux venus
J'ai une TabBar avec 4 vues. Jusque là tout va bien (au moins ça). Ensuite, j'aimerai : partir d'une de ces vues avoir un bouton qui charge une autre vue.
Avant de le faire au hasard sur plusieurs, j'ai testé avec une seule et ça ne marche pas.
J'ai une erreur "warning :passing argument 1 of 'setMaVue' from distinct Ojective-C type.
Voici mon code pour le bouton :
Autre chose de bizarre : la fonction du bouton apparaissait sur le main.xib. Maintenant j'ai bricolé et la méthode est apparue, mais je ne suis pas trop sûr du côté des liens.
J'ai vu qu'il y avait quelque chose similaire sur le forum : http://www.osx-dev.com/index.php?topic=3259.0 et j'ai tenté de voir dans la doc Apple, mais une petite piste serai la bienvenue.
Pour que ce code soit valide, il faut que la property soit définie ainsi :
@property(retain) TravailView01 * travailView01;
et que travailView01 hérite de UIViewController
Est-ce le cas ?
Pour qu'il soit efficace, il faut faire quelque chose de la vue de travailView01, et là qu'as-tu prévu ?
Ce changement a supprimé l'erreur... mais pas encore de changement de vue. (TravailVue01 hérite de UIViewController).
Au niveau de la vue, j'avais mis les mêmes noms (Travail01.xib), je viens de le changer pour éviter des confusion (Tr01.xib). J'ai changé sa classe en TravailView01, mais c'est tout. (j'avais également changé celle de la vue qui contient le bouton (TravailView avec TravailViewController) pour que j'accède à l'action dans le File's Owner.
Pour changer la vue brutalement, tu peux faire
[self.view addSubview:travailView01.view];
Pour faire une transition, tu peux prendre modèle sur la page du Tuto des transitions :Transitions Standards push, reveal, moveIn, fade
Quelle méthode me conseilles-tu parmi tes deux possibilités citées. Sachant qu'à partir de cette vue (Tr01), je vais accéder à une autre sous-vue (Tr01a) ?
[EDIT] La console me confirme que c'est une question d'Outlet
En tous cas, encore merci pour cette aide. J'apprend énormément. Même si je me rends bien compte que je suis encore loin, petit à petit ces lignes ont un sens et j'ai envie d'en savoir toujours plus.
Bonne nouvelle. Ma vue se charge enfin. Mais cette fois, c'est le random qui n'est pas accepté.
Que les programmeurs me pardonne pour cette présentation qui est sûrement très loin de ce qu'il faille faire, mais j'ai pas trouvé.
En insérant mes vues ainsi, Xcode n'est pas content du tout. Mais pourquoi ?
Donc random() fournit une suite de nombres pseudo-aléatoires... mais toujours les mêmes à chaque relancement de l'appli.
Faut utiliser srandom pour initialiser le générateur aléatoire, en lui passant une valeur toujours différente (genre en général on lui passe time(NULL), que tu peux trouver dans <time.h>)
Donc appeller au moins une fois [tt]srandom(time(NULL))[/tt] avant d'appeler random pour la première fois si tu veux avoir des valeurs aléatoires différentes entre chaque run.