2012-10-20 121 views
0

我对Cocoa Touch来说相当陌生。现在我想要继承UIViewController来提供我的自定义视图。由于我打算使用NSUserDefaults保存UITextField(passcodeField)的内容,所以我希望在UITextField更改其值时通知我。在UIViewController子类中添加通知观察者的时机

我读过的地方,为了做到这一点,我应该添加视图控制器成为UITextFieldTextDidChangeNotification通知的观察者。但是我只是不知道什么时候这样做。我考虑过几种选择。

  1. -loadView方法中。但是,因为我使用XIB加载视图,所以我认为我不应该混淆这种方法,而应该保持原样。 (我对这一点是否正确,BTW?)

  2. -viewWillAppear方法中。但是这种方法可能被多次调用,因为视图可能会被移出并进入屏幕而不会被破坏和重新创建。 (我是否正确?)这不会对程序造成任何伤害,但肯定不会是正确的方式。

  3. 在UIViewController的初始化程序中。如果我想在那里添加通知,我必须引用UITextField。通过这样做,我基本上可以在真正需要之前创建视图。此外,我想我在某处读到,如果系统内存不足,屏幕视图可能会被破坏。因此,如果发生这种事情,我可能会失去通知观察,对吧?

所以我现在完全困惑。你们可以给我一些建议,告诉我该把它放在哪里吗?非常感谢!

回答

0

把它放在ViewController的 - (void)viewDidLoad方法中,记得调用[super viewDidLoad];在你的实施开始时。

+0

非常感谢!我想这是完全正确的地方。顺便说一句,我只是有点困惑,为什么重载-loadView和调用[超级loadView]在它仍然无法调出从XIB接口。这背后有什么样的机制?谢谢! –

+0

如果从xib加载,则不会调用loadView。只有在您打算从代码构建视图时才会调用它。 – combinatorial

相关问题