Je suis sûr qu'il existe un moyen simple de résoudre ce problème, mais je ne peux pas comprendre.Définir le délégué pour le contrôleur de sous-vue
J'ai un TabBarViewController avec plusieurs vues. Dans certaines vues, j'ai chargé des vues de table avec du contenu XML. Mon analyseur XML fonctionne correctement, je l'ai testé auparavant dans un fichier Project distinct. Le problème est que mon TableViewController, pour lequel j'ai créé un XMLAppDelegate pour gérer l'analyse de mes fichiers xml, envoie toujours les méthodes au fichier de délégation principal de mon projet.
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MainAppDelegate slices]: unrecognized selector sent to instance 0x6d1fd00'
Comme le message d'erreur indique, il essaie de l'envoyer à mon MainAppDelegate, au lieu du XMLAppDelegate.
Je mis en œuvre le XMLAppDelegate dans mon contrôleur de fichiers et init le délégué de cette façon:
Le fichier .h de mon contrôleur
#import <UIKit/UIKit.h>
@class XMLAppDelegate, NewsDetailViewController;
@interface NewsViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
IBOutlet UITableView *newsTableView;
XMLAppDelegate *appDelegate;
NewsDetailViewController *ndvController;
}
@end
Le fichier .m de mon contrôleur
- (void)viewDidLoad {
[super viewDidLoad];
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];
self.title = @"Slices";
}
Le contrôleur est en cours de chargement dans TabBarView en tant que séparateur le fichier .xib. Dans ce fichier nib, j'ai connecté le délégué et la source de données à mon XMLAppDelegate.
Je reçois toujours cette erreur dans le journal et l'application se bloque lorsque j'essaie de passer à l'onglet souhaite le TableViewController en elle.
J'espère que vous comprenez mon problème. Peut-être que quelqu'un pourrait me dire ce que je fais mal ici en réglant le délégué à mon XMLAppDelegate.
EDIT:
Pour expliquer ce que je veux faire:
J'ai une classe XMLParser pour analyser le fichier, une classe de tranche pour stocker les éléments et XMLAppDelegate. A partir de ces fichiers, mes résultats XML sont stockés dans un tableau avec le nom "tranches". Pour utiliser les éléments du tableau, pour l'afficher en tant que Table ou étiquette de texte, j'ai connecté TableViewController à XMLAppDelegate (qui analyse mon document XML en utilisant le fichier XMLParser et stocke des données dans le tableau).
Les éléments de ce tableau sont déjà déclarés dans les fichiers comme des chaînes comme celui-ci
@property (nonatomic, readwrite) NSInteger sliceID;
@property (nonatomic, retain) NSString *image;
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *text;
Mais comme je l'ai dit, les travaux de l'analyseur. Je pense que mon problème semble être que j'ai demandé appDelegate.slices, mais le sélecteur n'est pas mon XMLAppDelgate. L'erreur indique qu'il utilise le délégué principal, qui n'a aucune propriété du fichier xml Delegate.
TabView charge le NewsViewController, qui appelle le tableau dans XMLAppDelegate. J'ai implémenté les fichiers, connecté le délégué à TableView en tant que source de données et délégué, mais il semble toujours prendre le délégué principal.
Ça me rend fou. Le projet est un profil d'entreprise pour un grand motel de bien-être. Je reçois le contenu du CMS sous forme de fichiers XML et dois y accéder à partir de XMLAppDelegate, qui fournit le contenu des sites.
J'espère que vous comprenez mon mauvais anglais. ;)
D'accord, problème résolu. J'ai implémenté l'Analyseur dans mon AppDelegate principal. Après cela, l'appel de la méthode Parser fonctionne. ;) – DevZarak