0

我有一个应用程序,当按下 2时,需要在视图控制器 1 中更改菜单buttonview controller实现这一目标的最佳方法是什么?

我听过很多讨论,NSNotification但我认为那是为了显示警报?

4

4 回答 4

4

执行此操作的“正确”方法是将新状态写入应用程序的数据模型。当另一个视图控制器激活时,它应该根据模型所说的更新它的视图。这样,即使在用户进行更改时这些信息不存在,其他视图控制器也可以使用这些信息。

通知是将信息传达给其他对象的好方法,而无需具体了解它们,但只有在发送时存在关心它的对象时,通知才有效。

于 2013-04-24T19:27:46.850 回答
1

你以错误的方式思考这个问题。一个视图控制器不应该关心另一个视图控制器中发生的事情。

如果点击按钮会导致菜单内容发生变化,那么听起来您正在更改数据。按下按钮应该告诉模型层可用选项已更改,另一个视图控制器应该从模型层将可用选项加载到菜单中。

我听过很多关于 NSNotification 的讨论,但我认为那是为了显示警报?

不,它是为了以一种不将这些部分耦合在一起的方式将有关事件的信息分发到应用程序的其余部分。这不是与用户交互。

于 2013-04-24T19:25:41.687 回答
0

NSNotification是一种方法,不,它与警报无关。

它的工作原理是这样的:“生产者”可以发布(发送)通知。其他对象可以订阅通知并对通知作出反应。这是解耦对象的好方法(目标通常是让每个对象知道尽可能少的关于另一个对象的信息)。

搜索NSNotification tutorial一下,有不少。你应该真正熟悉它们,它们在 iOS 和 Mac OS X 开发中被大量使用,因为它们非常非常方便。

于 2013-04-24T19:26:34.337 回答
0

如果您没有同时呈现两个视图控制器并且您从 viewcontroller1 转换到 viewcontroller2,您可以使用 segues 将信息从 vc1 传递到 vc2。我认为通知很棒,但我认为没有必要。

于 2013-04-24T19:57:36.343 回答