2010-08-22 4 views
3

J'ai une sous-classe UIViewController qui permet à l'utilisateur d'ajouter un nouvel objet modèle, dans ce cas un compte bancaire. J'ai appelé le contrôleur de vue AddBankAccountViewController. L'utilisateur peut entrer le numéro de compte, une étiquette de compte et la banque du compte, mais tout cela est fait dans des contrôleurs de vue séparés.La délégation est-elle la meilleure façon de le faire?

J'utilise la délégation pour indiquer à AddBankAccountViewController que l'utilisateur a modifié les valeurs. Le résultat est que AddBankAccountViewController est désormais conforme à 3 protocoles personnalisés (par exemple, EditAccountNumberViewControllerDelegate, etc.), et il peut être encore plus dans le futur.

Ma question est la suivante: est-ce la bonne façon de procéder, ou existe-t-il un meilleur moyen (par exemple un lien direct entre les contrôleurs de vue et AddBankAccountViewController)?

Répondre

1

La délégation fonctionne correctement. Vous pouvez ajouter des méthodes connexes dans un protocole commun (éventuellement facultatif). Ou vous pouvez utiliser le modèle cible/action, mais la délégation est probablement ce que vous voulez la plupart du temps.

2

Une autre option est d'avoir une classe BankAccount et de la modifier directement, et d'envoyer des notifications BankAccount quand il a été modifié (ou simplement supposer qu'il a changé dans viewDidAppear :). Ensuite, il suffit de passer le compte bancaire pour modifier à chaque contrôleur de vue.

+0

AKA Key-Valeur d'observation. http://developer.apple.com/iphone/library/iPad/index.html#documentation/Cocoa/Conceptual/KeyValueObserving/Concepts/Overview.html – falconcreek

+0

Pas tout à fait; Je n'ai * jamais * utilisé KVO parce que cela semblait être une complexité inutile (la documentation est un peu vague), surtout quand UIKit utilise des notifications "normales", par ex. UIDeviceOrientationDidChangeNotification au lieu de KV-observant "orientation" UIDevice. J'utilise des choses comme '[[NSNotificationCenter defaultCenter] postNotificationName: objet MyClassFooChangedNotification: self]'. –

+0

Il existe toujours plusieurs méthodes ... Les propriétés synthétisées conformes à la norme KVC publient automatiquement les notifications. – falconcreek

Questions connexes