@edit: voir plus bas.
si vous faites seulement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @interface Class : SuperClasse [<protocol, >] { }
la classe a pour super-classe NSObject… qui lui ne répond pas à "initWithNibName:bundle:" …
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @interface Class { }
Non ça ne semble pas être cela, j'ai déclaré les classes comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 devenir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 RssDescViewController *dvController = [[RssDescViewController alloc] initWithNibName :@"RssDescViewController" bundle:[NSBundle mainBundle]];
si vous n'avez pas de sous-classe de UIViewController
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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…
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 ?
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager