La manière standard de transmettre des données dans la hiérarchie est la délégation ou, plus simplement, l'interrogation d'une propriété sur le contrôleur de vue d'édition lorsque vous souhaitez récupérer les données modifiées. Maintenant, quand il s'agit d'éditer les contrôleurs de vue, vous pouvez les concevoir pour prendre en charge à la fois l'édition directe d'objets 'live', ou une copie qui vous permettra de faire un modèle Save/Cancel.
Donc, ce que vous voulez, c'est que votre contrôleur de vue d'édition édite une sorte d'instance ModelObject
avec diverses propriétés. Ces propriétés correspondent aux champs de texte ou aux sélecteurs de date, etc. dans la vue. Donc, vous pourriez avoir un Person
avec NSDate *dateOfBirth
et NSString *name
.
Lorsque vous créez le contrôleur de vue et que vous le poussez sur le contrôleur de navigation, vous lui donnez l'un de ces ModelObject
s à modifier. Vous pouvez soit transmettre un objet directement à partir de votre modèle qui sera édité «en direct» lorsque l'utilisateur entre des valeurs, ou une copie qui vous permettra de rejeter les modifications et d'implémenter un flux de travail Enregistrer ou Annuler. Pour ce dernier, vous pouvez ajouter vous-même les boutons Enregistrer et Annuler avant de pousser la vue d'édition qui vous permet de gérer les actions vous-même sans avoir besoin de délégation. Par conséquent, votre contrôleur d'édition modifiera les propriétés de cet objet lorsque l'utilisateur saisira une nouvelle valeur dans un champ de texte ou modifiera le sélecteur de date. Pour un objet en direct, ces modifications seront appliquées immédiatement à votre modèle. Pour une copie, lorsque l'utilisateur clique sur Enregistrer, vous interrogez le contrôleur de vue d'édition pour l'objet que vous avez transmis et vous le fusionnez/copiez dans votre modèle. Si l'utilisateur clique sur annuler, il vous suffit de rejeter l'objet.
Oui, mais comment puis-je lier les données? Dans le tableviewcontroller didSelectRowAtIndexPath, je crée une instance de uiviewcontroller puis j'accède aux propriétés, puis j'appuie le uiviewcontroller sur la pile. Le uiviewcontroller a maintenant les données du tableviewcontroller mais comment allons-nous dans l'autre sens? – mbogh
Comment cela est fait dépend de la façon dont vous configurez votre contrôleur de table. Mais vous pouvez conserver le modèle en tant que propriété de vue de table que votre vue de table et vos contrôleurs de vue d'édition peuvent accéder et manipuler.Le tutoriel Core Data d'Apple couvre une approche qui utilise des données de base, mais l'idée est la même: http://developer.apple.com/iphone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html –