Aide UINavigationController + TabBar
F007
Membre
Bonjour,
je vous écris parce que je suis entrain de réaliser un projet informatique de calendrier iPhone (je suis étudiant en DUT info).
Seulement voila ces dernières semaines je bloque sur un point de l'application...
Je précise que je n'utilise pas Interface Builder mais que je "code tout à la main".
J'utilise 4 vues dans mon application que j'affiche grace à une Tabbar.
J'ai déclaré ma tabbar et mes vues dans mon appDelegate.
Dans une de mes vues j'ai un label et des boutons qui affichent le jour que l'on parcours.
En dessous de ça j'ai une UITableView qui affiche les événements du jour sélectionné.
Encore en dessous ma tabBar.
Tout en haut de la vue je voudrais une navigation bar avec des boutons pour créer des événements. Par exemple je voudrais un bouton + à mettre à droite (rightBarButtonItem).
Seulement voilà je n'arrive pas à l'afficher.
Ma vue est une subclass de UINavigationController.
Quand j'écris le code suivant rien ne s'affiche :
Je vous joint un screen shot de l'appli pour que vous visualisiez mieux :
Je vous remercie d'avance pour votre aide.
je vous écris parce que je suis entrain de réaliser un projet informatique de calendrier iPhone (je suis étudiant en DUT info).
Seulement voila ces dernières semaines je bloque sur un point de l'application...
Je précise que je n'utilise pas Interface Builder mais que je "code tout à la main".
J'utilise 4 vues dans mon application que j'affiche grace à une Tabbar.
J'ai déclaré ma tabbar et mes vues dans mon appDelegate.
Dans une de mes vues j'ai un label et des boutons qui affichent le jour que l'on parcours.
En dessous de ça j'ai une UITableView qui affiche les événements du jour sélectionné.
Encore en dessous ma tabBar.
Tout en haut de la vue je voudrais une navigation bar avec des boutons pour créer des événements. Par exemple je voudrais un bouton + à mettre à droite (rightBarButtonItem).
Seulement voilà je n'arrive pas à l'afficher.
Ma vue est une subclass de UINavigationController.
Quand j'écris le code suivant rien ne s'affiche :
// ajout du bouton ajouter un nouvel événement<br /> UIBarButtonItem *plusButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addEvent:)];<br /> self.navigationItem.rightBarButtonItem = plusButton;<br /> [plusButton release];
Je vous joint un screen shot de l'appli pour que vous visualisiez mieux :
Je vous remercie d'avance pour votre aide.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Comme ça, tu peux avoir le mécanisme de UINavigationController pour chaque ViewController de ton TabBarController. Ainsi ton UITabBarController ne s'affichera que sur la vue 1 de ton UINavigationController.
Lisant tes propos, je ne pense pas que ce soit l'inverse qu'il te faille.
Je suppose que chaque TabBarItem, charge un ViewController différent.
1ère solution
Tu n'as pas besoin d'avoir le mécanisme de navigation dans ton viewController, dans ce cas, tu ajoutes une navigationBar dans ta vue et ensuite tu pourras à ta guise mettre des BarButtonItem (exemple ton bouton "+").
Dans ton .m
2ème solution
Tu veux pouvoir utiliser la navigation dans chacun de tes onglets. Dans ce cas dans le appDelegate :
Puis ensuite dans chaque viewController, tu auras un NavigationController.
Et tu pourras ajouter tes boutons comme ceci :
self.navigationItem.rigthBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:nil action:nil]autorelease];
ps: il y a peut être des fautes de frappe dans le code car je l'ai fait depuis un poste Windows et je ne l'ai ainsi pas passé dans Xcode avant. Désolé.
Vous avez tout les deux été très réactifs et pédagogues (j'ai tout compris et corrigé mes erreurs en 2 minutes).
(j'ai utilisé la deuxième solution).
Je vais tout de même vous embêter encore un peu...
Je cherche dans une vue semaine à afficher les événements d'une semaine.
Pour cela je récupère ces événements dans un NSMutableArray.
J'ai utilisé un tuto (iPup) pour récupérer des événements d'une date à une autre.
Seulement ils utilisent des dates limites absolues (ceci m'oblige à calculer l'écart entre aujourd'hui et la date limite).
Pour éviter d'éventuels beugs je me demandais s'il était possible de définir cet intervalle entre deux dates toutes simple (dd/MM/YYYY à dd/MM/YYYY).
Je vous joint le code :
(n_annee_debut n_annee_fin etc. représentent le calcul entre la date actuelle et la date recherchée).
Je vous remercie d'avance.
Je bute tout de même sur un problème de NSMutableArray je vais certainement vous demander deux trois conseils dans la journée...
J'ai toute fois des questions portées maintenant sur la mémoire.
J'utilise l'outils Leaks et Allocation dans Instruments.
Après quelques modification sur mon code, l'outils Leaks ne détecte plus aucune fuite mémoire.
Cependant je n'arrive pas à comprendre comment faire pour que l'outils allocation fasse de même ;-)
J'observe au total (après 5 minutes 35 d'utilisation)
Live Bytes : 2.87 MB
Si j'avais continué cela aurait été pire (logique non ?)
Ce que je ne comprends pas c'est : pourquoi quand je change de vue ça augmente, puis ça diminue mais c'est un peu plus qu'au départ ?
Forcement après quelque temps ça prend de la place en mémoire...
Finalement j'ai même redécouvert une Leak :
elle apparait quand je créé un événement lors de la saisie du titre et il me semble que c'est avec le correcteur orthographique.
Mais le truc c'est que j'utilise le controleur de saisie d'événement intégré au SDK donc je vois pas comment je pourrais la corriger !
Voici ses caractéristiques : Leaked Object : GeneralBlock16 Responsible Library : ProofReader Responsible Frame : PRDbInit
Bref si quelqu'un pouvait m'aider en m'expliquant si c'est normal ou pas mes chiffres...
J'ai aussi quelque chose à rajouter :
j'utilise des objets que je partage dans toute mes classes : (classes singleton)
J'ai par exemple un objet Mois avec lequel j'utilise des méthodes pour calculer des jours...
je vous donne un exemple de code et j'aimerai savoir si je dois ajouter quelque chose à propos de la mémoire pour l'améliorer ?
Je vous remercie pour votre aide !