2009-09-10 4 views
1

Je ne sais pas comment je peux partager les mêmes données entre deux éléments de la barre d'onglets. Un onglet utilise nsfetchedresultscontroller et l'autre table est juste une vue normale qui devrait utiliser les mêmes données que mes résultatsrésultés.tableView et vue normale (même objet de données)

Si j'avais deux vues normales, je ferais simplement de mon objet un singleton, et laisserais la vue table et la vue normale utiliser les mêmes données.

Mais maintenant j'ai un fetchresultscontroller et une vue normale. Je pensais juste utiliser un autre Fetchedresultscontroller pour ma vue normale, donc j'ai toutes les fonctionnalités telles que récupérer le cache, notifications et autres ..

Je sais fetchresultscontroller devrait être utilisé pour tableview, mais je suppose que je peux l'utiliser pour non vues de table aussi bien.

Quelqu'un sait ce que je devrais faire? Je n'ai pas pu trouver de documentation sur Apple à ce sujet.

Répondre

0

Vos données devraient avoir à voir avec vos viewControllers ou vues - c'est-à-dire si vous suivez le style MVC. Si vos données ne sont disponibles que dans un viewController et que vous ne voulez pas les extraire dans sa propre classe, fournissez des méthodes dans votre viewController qui peut être appelée par l'autre viewController pour obtenir les données.

Par exemple, ont des méthodes comme celle-ci:

- (NSString) getNameOfSelectedUserAtIndex:(int) index; 
- (int) getCountOfSelectedUsers; 
- (NSSArray) getResults; 

Et puis à partir de votre autre viewController, appelez:

string = [fetchedresultscontroller getNameOfSelectedUserAtIndex:i]; 
count = [fetchedresultscontroller getCountOfSelectedUsers]; 
array = [fetchedresultscontroller getResults]; 

Vous devez vous assurer que vous ajoutez fetchedresultscontroller comme une variable d'instance à votre autre viewController et le définir probablement dans son viewDidLoad.

+0

Merci pour votre anwser !, mais je dois faire une propriété dans mon appDelegate avec un pointeur sur ce contrôleur pour atteindre le nsfetchedresultscontroller, car les deux contrôleurs vivent dans leur propre barre d'onglets. J'aime votre solution pour accéder aux données, mais comment pourrais-je gérer les notifications. Si mon fetchedresultscontroller reçoit des notifications de mise à jour, ma vue normale devrait également recevoir ces données, des réflexions à ce sujet? –

+0

Je ne suis pas sûr de comprendre ce que vous faites. Une façon de le faire serait d'avoir vos données en tant que propriétés dans votre appDelegate. Ensuite, tous les contrôleurs appellent, comme ci-dessus, mais au lieu de récupéréresultscontroller, vous appelez appDelegate. Comme pour les notifications, j'ai un contrôleur de vue principale qui demande une notification et gère les données d'enregistrement lorsque l'application se ferme. J'ai parfois cette notification dans mon appDelegate ou dans ma classe de modèle de données. Tout dépend de ce que j'essaie de faire. En d'autres termes, je ne pense pas que vous soyez obligé d'utiliser un certain viewcontroller pour vos notifications. – mahboudz

Questions connexes