0

任何帮助,将不胜感激。

我正在寻找一种以编程方式通知视图是从该视图控制器外部加载的方法。

假设我的主视图有 5 个按钮,在加载视图并出现按钮后,我希望在另一个文件(该 viewContrller 之外)中通知它已加载。我如何/在哪里可以检查并收到通知?

我需要做一些面向方面的编程吗?

4

4 回答 4

2

使用 NSNotificationCenter。您可以在班级之间进行交流。

于 2012-04-04T20:43:55.567 回答
0

在您的其他对象中侦听自定义 NSNotification。让您的视图控制器在其生命周期中最有意义的任何部分发布该通知(viewDidLoad、viewDidAppear ...)。

如果您不能发布通知,那么观察 keyPath 可能是要走的路。例如,您可以在您的控制对象中放置类似这样的内容,然后实现observeValueForKeyPath:

[viewController addObserver:self
                 forKeyPath:@"view"
                    options:NSKeyValueObservingOptionNew
                    context:NULL];
于 2012-04-04T20:44:41.020 回答
0

NSNotificationCenter 或委托方法是完成此任务的最合适的方法。

于 2012-04-04T21:00:34.843 回答
0

虽然您可以像其他人建议的那样使用通知或 KVO 来执行此操作,但这强烈表明存在设计问题。您永远不应该直接访问视图控制器的内部视图。所以更深层次的问题是:你为什么想知道?

根据我的经验,最可能的原因是您让其他对象设置标题或启用修改。这会破坏 MVC 并导致您可能正在尝试解决的问题。处理这个问题的正确方法是将数据放入一个模型对象中,该对象在各种视图控制器之间共享。然后,当前视图控制器可以观察模型的变化并适当地更新其 UI 元素。

于 2012-04-04T21:16:13.107 回答