@edit: voir plus bas.
Version imprimable
@edit: voir plus bas.
Non ça ne semble pas être cela, j'ai déclaré les classes comme ceci:
Code:
1
2
3 @interface RssDescViewController : UIView { // ... }
Merci, je viens effectivement de me rendre compte que toutes mes "Sous-TabBar" sont descendantes de UIView alors qu'elles devraient l'être de UIViewController.
Cependant je suis incapable de les faire fonctionner si je les fais hériter de UIViewController, j'ai beau tout essayer dans Interface Builder, mon application plante au lancement.
Voilà un aperçu du nib de ma 2e vue qui fonctionne si je le fais hériter dans le .h de... UIView mais pas de UIViewController:
@edit:.
c'est impossible de deviner à distance quelle "couac" vous avez bien pu faire dans la définition de vos objets dans IB…
Je m'en doute, mais si je comprends bien toutes mes vues doivent hériter de UIViewController et non pas de UIView ?
Ou bien seulement la vue principale ? (qui contient la TabBar) et qui hérite déjà de UIViewController.
Merci
NON !
Vos Controller de View (RssDescViewController par exemple) doivent descendre de UIViewController et les vues de UIView…
(et donc une même classe ne peut donc pas remplir les 2 rôles à la fois… et je commence à soupçonner que ce serait peut-être bien çà votre "couac"…)
Merci pour votre réponse !
Donc pour chaque onglet (=nib) utilisé par le TabBar j'ai besoin d'une UIView et d'un UIViewController ?
Pour le moment, pour chaque nib, je déclare le File's Owner dans IB comme UIViewController et le UIView (dans IB) comme le nom de la classe (par exemple RssDescViewController, le nom est effectivement mal choisi), ensuite je relie le "view"du UIView au File's Owner (UIViewController).
Dans les .h je déclare le nom de la classe (RssDescViewController par exemple) comme descendant de UIView et c'est tout.
J'ai donc dans mon code accès uniquement aux UIView, pas au contrôleurs.
Ce qui ne fonctionne pas avec le initWithNibName qui lui demande l'accès au contrôleur par exemple.
Alors comment dois-je faire ?
Désolé si j'ai du mal à comprendre, mais j'avoue être un peu perdu.
Mettez de l'ordre dans le nom de vos classes…
et
doit devenirCode:
1
2
3 RssDescViewController *dvController = [[RssDescViewController alloc] initWithNibName :@"RssDescViewController" bundle:[NSBundle mainBundle]];
si vous n'avez pas de sous-classe de UIViewControllerCode:
1
2
3 UIViewController *dvController = [[UIViewController alloc] initWithNibName :@"RssDescViewController" bundle:[NSBundle mainBundle]];
ET
si "RssDescViewController" est bien le nom du fichier .xib qui contient le tout…
@edit.
qui implémente navigationController ?
visiblement pas la classe dont "self" est une instance…
j'ai déjà répondu à çà plus haut…
mais visiblement vous ne captez pas du tout le concept MVC…
les vues ont rarement besoin d'avoir des "outlet" sur d'autres vues…
ce qui semblent indiquer que non seulement vous mélangez les noms des hiérarchies de classes mais aussi les rôles de chacune des hiérarchies…
(charger un "controller" à partir d'un "nib" à chaque sélection n'est pas la bonne direction pour avoir une application "snappy"…)
Est-ce que vous avez regardé les exemples du site d'Apple ?
@edit.
JAMAIS !
les vues descendent de UIView…
les contrôleurs (de vues…) de UIViewController…
puisque vous avez besoin d'un TableView :
http://developer.apple.com/iphone/li...ion/Intro.html
Ok ok, j'ai tout repris depuis le début, recommencé tout le projet et tout va nettement mieux !
Merci pour votre aide.