请注意,视图是从viewController外部加载的

时间:2012-04-04 20:41:54

标签: iphone objective-c ios uiviewcontroller aop

任何帮助都将不胜感激。

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

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

我是否需要进行面向方面编程?

4 个答案:

答案 0 :(得分:2)

使用NSNotificationCenter。你可以在课堂之间进行交流。

答案 1 :(得分:0)

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

如果您无法发布通知,那么观察keyPath可能就是您的选择。例如,您可以在控件对象中放置类似的内容,然后实现observeValueForKeyPath:

[viewController addObserver:self
                 forKeyPath:@"view"
                    options:NSKeyValueObservingOptionNew
                    context:NULL];

答案 2 :(得分:0)

NSNotificationCenter或委托方法是实现此目的的最合适方法。

答案 3 :(得分:0)

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

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