Question

Ok. celui-ci est un défi.

J'ai une table dans un contrôleur de navigation.

Je le pousse à partir de la racine, où j'ai une action add qui me permet d'ajouter un nouvel enregistrement. Cela fonctionne bien.

Maintenant, ce que j'ai essayé de faire est d’ajouter cette vue Table à une vue barre de tabulation (sans contrôleur de barre de tabulation cuz qui ne fonctionnerait pas) mais au sein du même contrôleur de navigation.

Ce que je veux faire est donc ceci: Racine > TabBarView (charge Tableview) > ajouter un nouvel enregistrement.

Le problème réside dans le contexte de l'objet géré. J'ai l'intégralité de l'erreur "impossible de trouver l'entité". mais je ne sais pas comment le réparer.

J'ai réussi à faire apparaître le contrôleur de vue modale AddRecord à partir de tabBarView, mais il se présente sans barre de navigation, alors que si j'essaie d'ajouter un enregistrement dans la table solitaire (en dehors de la barre de tabulation), cela ne pose aucun problème. .

J'appelle maintenant mes méthodes à partir des boutons de navigationBarbuttons de TabBarView, en passant par les méthodes tableviews.

Je sais que mes méthodes doivent maintenant être appelées à partir de tabBarView au lieu de la tableview réelle. Elles se déclenchent, mais je ne sais pas comment gérer le MOC lorsqu'il est dans une tabView.

Oh, et ceci est basé sur des recettes et des livres coredata. Ainsi, lorsque la méthode add record est déclenchée, elle crée un nouveau MOC pour le créer, puis se réintègre dans le MOC principal lorsque vous avez terminé.

Des idées?

Était-ce utile?

La solution

On dirait que vous avez quelques problèmes.

  1. " Impossible de trouver l'entité " error - cela dépend du contexte d'objet géré que vous utilisez. Si vous avez créé un MOC séparé pour gérer l'objet que vous modifiez (ce qui est d'ailleurs une bonne idée), assurez-vous de lui affecter un coordinateur de stockage persistant. Voici comment un MOC découvre quels objets sont disponibles. Si vous utilisez le MOC créé dans le délégué d'application, veillez à épeler correctement le nom de l'entité.
  2. Pas de barre de navigation dans la feuille - Lorsque vous poussez un contrôleur de vue sur un contrôleur de navigation, son navigationItem est utilisé pour remplir la barre de navigation. Lorsque vous présentez un contrôleur de vue sous forme de feuille, seul le contrôleur de vue est affiché. Il n'est pas intégré dans un contrôleur de navigation. Pour que l'élément de navigation s'affiche, vous devez créer un nouveau contrôleur de navigation avec votre contrôleur de vue comme racine, puis présenter la vue du contrôleur de navigation.

Autres conseils

En ce qui concerne le MOC principal, les vues et les contrôleurs ne doivent pas être pertinents. Obtenez une référence au MOC dans le contrôleur que vous utilisez et utilisez-le avec ce MOC. Si votre délégué à l'application crée le MOC principal, faites-en une propriété de ce délégué et accédez-y à partir de votre contrôleur de vue ou d'onglets.

Je ne suis pas au courant du problème de navigation que vous rencontrez, mais s'il n'y a pas de barre de navigation lorsque vous en avez besoin, je suppose que vous devez créer et ajouter un UINavigationController quelque part où vous ajoutez une sous-classe UIViewController. Faites de la sous-classe la racine du nouveau UINavigationController et placez le contrôleur dans l’onglet ou autre.

Votre contexte d'objet géré (MOC) ne doit pas dépendre de la navigation ou des vues. Cela fait partie du modèle. (Bien que, comme vous le savez, un deuxième MOC pour une vue en édition annulable > dépendrait de la navigation dans la mesure où vous la créez pour utilisation par l'éditeur.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top