Besoin d'eclairage sur certain points :)
guittonews
Membre
Salut à tous,
cela fait quelques semaines que je n'ai pas mis les mains dans le cambouis pour laisser murir les choses que j'avais appris. Cela à porter ses fruits notamment au niveau d'IB que je n'arrivait pas à utiliser lors de mes premiers pas.
cependant je rencontre un problème au moment de "lier" IB et le code. Par exemple je créé une application tabbar, qui dans chacun des tab contient une navbar et une tableview. Comment associer un data source à chaque tableview? ou? comment? c'est juste une question de nommage de mes classes? pareil pour les delegates?
Merci d'avance pour tout vos conseils qui m'ont toujours aidé à y voir plus clair dans ce monde (qui à l'air) fabuleux
PS: ci - joint le projet de base sur lequel j'aimerai m'appuyer et qui illustrera mes propos
PS 2 : petite précision, le projet est juste là pour illustrer je ne vous demande bien sûr pas de me le faire
cela fait quelques semaines que je n'ai pas mis les mains dans le cambouis pour laisser murir les choses que j'avais appris. Cela à porter ses fruits notamment au niveau d'IB que je n'arrivait pas à utiliser lors de mes premiers pas.
cependant je rencontre un problème au moment de "lier" IB et le code. Par exemple je créé une application tabbar, qui dans chacun des tab contient une navbar et une tableview. Comment associer un data source à chaque tableview? ou? comment? c'est juste une question de nommage de mes classes? pareil pour les delegates?
Merci d'avance pour tout vos conseils qui m'ont toujours aidé à y voir plus clair dans ce monde (qui à l'air) fabuleux
PS: ci - joint le projet de base sur lequel j'aimerai m'appuyer et qui illustrera mes propos
PS 2 : petite précision, le projet est juste là pour illustrer je ne vous demande bien sûr pas de me le faire
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
• Cela peut-être un UIViewController avec un nib par page, connexion du datasource et delegate dans ce nib.
• Un UIViewController perso sous-classé selon les différentes 'tab', avec encore l'option d'un nib commun, ou un nib par 'tab'
• ...
Il faut faire un projet sur papier avant tout cela en prenant des décisions qui permettent des évolutions futures "faciles" à réaliser ...
C'est vrai que je n'ai pas était très clair... :crackboom:-
Je reprend donc
J'ai une tabbar avec trois items. Dans chacun de ces items je voudrais une navbar. Et enfin dans chacune de ces navbar une table view.
Ce que j'ai reussi à faire d'une seule manière : dans un seul nib. (A partir du moment ou un item de mon tab bar pointe vers un autre nib qui contient un navigationcontroller ca plante...).
Bref, j'ai donc mon nib avec ma tabBar, qui pour chaque item contient un navigationController.
Chacun de mes navigationController contient un tableViewcontroller. Jusque là ca marche.
Par simplicité je me concentre maintenant sur un de ces items, disons "settings".
Je crée une classe SettingsTableViewController et je l'ajoute à mon nib. Puis réalise les connexions pour le dataSource et le delegate.
Jusque là toujours pas de problème ma tableView se met bien à jour en fonction de mon dataSource.
Maintenant j'aimerais que quand une ligne est selectionnée une nouvelle vue s'affiche, via le navigation item. Et c'est là que ça coince...Je n'arrive pas à récupérer mon navigationController. J'ai mis 3 log à ce niveau là (didSelectRowAtIndexPath) dont voici les traces :
.
Ils correspondent respectivement à :
Je reste à votre écoute pour toutes vos remarques, suggestions, questions qui pourraient vous aider à m'aider...
Merci beaucoup d'avance :why?:
[EDIT] le projet que j'avais mis a disposition dans mon premier post n'est pas à jour par rapport à ce que je décris ici, j'ai avancé sur certain problème depuis. Je serais ravis de le mettre à votre dispostion si certain veulent me faire des commentaires pour m'ameliorer....[/EDIT]
J'ai un peu de nouveau :kicking:
vu que je n'avait pas d'objet "parent" j'ai récupéré le delegate de l'application pour reparcourir mes controller depuis le haut.
(Pas très satisfaisant comme solution mais ca avance au moins...)
Et ca marche :DDDDDDD
si quelqu'un veut jeter un oeil pour voir si c'est vraiment crado ou pas je suis pas contre
[size=12pt]Pour mémoire, on devrait pouvoir utiliser ici la property navigationController[/size]
navigationController
A parent or ancestor that is a navigation controller. (read-only)
@property(nonatomic, readonly, retain) UINavigationController *navigationController
Discussion
Only returns a navigation controller if the view controller is in its stack. This property is nil if a navigation controller cannot be found.
Ceci dit le mélange que tu fais entre navigation par TabBar et navigation par NavigationController doit au minimum perturber le mécanisme. Il ne doit pas falloir disposer l'architecture n'importe comment, j'essaie ce soir ...
[size=12pt]Les notifications[/size]
Pour communiquer d'un objet B vers un objet A avec lequel il n'y a pas de connexion directe on dispose également du principe des notifications :
1) On inscrit l'objet en question pour recevoir une certaine notification, identifiée par un nom :
2) On prévoit de supprimer cette inscription dans le dealloc
3) L'objet B qui veut communiquer envoie un message via l'intermédiaire du defaultCenter :
Oui c'est la dessus que j'étais parti avant de tester la solution par le delegate...
En ce qui concerne les notifications ca me parait sympa. Je le garde de coté car mon "faible" niveau me fait peur...à chaque fois que je test quelque chose de nouveau j'y passe trois jours et là j'ai besoin d'avancer. Cependant au prochain blocage je reviendrais là dessus.
Merci philippe pour tes conseils toujours avisés
Puis allé c'est la St patrick biere pr tout le monde
Je propose l'architecture suivante pour l'association tabBar/NavBar
- Dans le tableau du TabBarController, on place un SecondViewController (UIViewController) de nib SecondView.xib
- SecondView.xib contient un UINavigationController, IBOutlet du secondViewController. Il est chargé dans viewDidLoad: par
- UINavigationController contient un SecondTableViewController héritant de UITableViewController dont le nib est SecondTable.xib, dont la vue est une UITableView
- Ce secondTableviewController implémente tableView: didSelectRowAtIndexPath: et crée un AnotherViewController, dont le nib est AnotherView.xib
rq: Il faut redimensionner [navigationController view] pour la gestion correcte de la status bar.