2010-08-22 23 views
3

我有一个UIViewController子类,允许用户添加一个新的模型对象,在这种情况下是一个银行账户。我将视图控制器命名为AddBankAccountViewController。用户可以输入账户号码,账户标签和账户的银行,但这些都是在不同的视图控制器中完成的。代表团是否是这样做的首选方式?

我使用委托让AddBankAccountViewController知道用户已更改值。结果是AddBankAccountViewController现在符合3个自定义协议(即EditAccountNumberViewControllerDelegate等),它可能在未来更多。

我的问题是:这是做到这一点的正确方法,或者是否有更好的方法(例如从视图控制器到AddBankAccountViewController的直接链接)?

回答

1

代表团很好。您可能想要将相关的方法汇总在一个通用的(也许是可选的)协议中。或者你可以使用目标/行动模式,但代表团可能大部分时间都是你想要的。

2

另一种选择是拥有一个BankAccount类并直接对其进行修改,并让BankAccount在发生更改时发出通知(或者假设它可能已在viewDidAppear中更改:)。然后通过银行账户修改到每个视图控制器。

+0

AKA键值观察。 http://developer.apple.com/iphone/library/iPad/index.html#documentation/Cocoa/Conceptual/KeyValueObserving/Concepts/Overview.html – falconcreek 2010-08-23 22:42:31

+0

不完全;我*从未*使用过KVO,因为它看起来像是不必要的复杂性(文档有点模糊),尤其是当UIKit使用“正常”通知时。 UIDeviceOrientationDidChangeNotification而不是KV-observing UIDevice的“orientation”。我使用的东西像'[[NSNotificationCenter defaultCenter] postNotificationName:MyClassFooChangedNotification object:self]'。 – 2010-08-24 14:11:00

+0

总有不止一种方式...符合KVC的@synthesized属性将自动发布通知。 – falconcreek 2010-08-24 18:55:41

相关问题