2011-04-04 3 views
0

J'ai des difficultés à définir une navigation entre plusieurs tables. J'utilise le modèle de navigation pour les applications iOS. De La RootViewController (RootViewController.xib contient déjà une table), je peux accéder à une autre vue de la table (dans le générateur d'interface, j'ai pu connecter le IBOutlet avec la coutume UITableViewController):Naviguer de la vue tabulaire à la vue tabulaire (iOS)

@interface RootViewController : UITableViewController <NSFetchedResultsControllerDelegate> { 
    xxxTableViewController *teeTimeTableVC; 
} 
@property (nonatomic, retain) IBOutlet xxxTableViewController *xxxTableVC; 

En RootViewController.m la ligne suivante fonctionne très bien:

[self.navigationController pushViewController:self.xxxTableVC animated:YES]; 

le constructeur d'interface ne me laisse pas connecter le IBOutlet dans le second fichier XIB (disons xxxTableViewController) avec la prochaine UITableViewController.

@interface xxxTableViewController : UITableViewController 
    <UITableViewDataSource, UITableViewDelegate> { 
    yyyTableViewController *yyyTableVC; 
} 
@property (nonatomic, retain) IBOutlet yyyTableViewController *yyyTableVC; 

Dans xxxTableViewController.m la ligne suivante affiche un avertissement:

[self.navigationController pushViewController:self.yyyTableVC animated:YES]; 

Dans le code, je reçois aussi un avertissement: incompatible types Objective-C de la yyyViewController struct * ', attendu « struct UIViewController * 'lors de la transmission de l'argument 1 de' pushViewController: animated: 'à partir du type Objective-C distinct

Est-ce que j'essaie de mettre en œuvre un mauvais concept? Est-ce possible seulement de cette façon directement à partir du RootViewController? Les deux classes de contrôleurs semblent identiques:

@interface yyyTableViewController : UITableViewController 
    <UITableViewDataSource, UITableViewDelegate>{ 
} 

Peut-on me donner un indice? Dois-je utiliser des éléments d'interface utilisateur différents ou implémenter un autre protocole?

Merci, Patric

Répondre

0

Le problème est que votre second contrôleur n'a pas le membre navigationController, de sorte que le compilateur se plaint lorsque vous essayez de l'utiliser. Vous devrez créer ce membre vous-même et le transmettre à la classe lors de l'initialisation.

+0

Bonjour Andy. Merci pour votre réponse. Je pense que je ne suis pas d'accord ou je ne comprends pas complètement. Le membre navigationController semble être hérité de UITableViewController qui hérite de UIViewController. – user690110

+0

L'autre avertissement d'avertissement est peut-être plus explicite: xxxTableViewController.m: avertissement: Problème sémantique: types de pointeurs incompatibles envoyant 'yyyTableViewController *' au paramètre de type 'UIViewController *' Mais cela n'explique pas non plus les problèmes avec le constructeur d'interface. Y at-il peut-être un tutoriel disponible qui montre la navigation entre plus de 2 tables? – user690110

+0

@ user690110 En regardant à nouveau votre avertissement, il semble presque que vous n'incluez pas l'en-tête de yyyTableViewController, donc le compilateur ne peut pas comprendre le type de yyyTableVC. Je ne suis pas sûr de savoir quoi d'autre causerait cet avertissement. – Andy

Questions connexes