【问题标题】:NSTimer in a controller, how to notify the view?NSTimer 在控制器中,如何通知视图?
【发布时间】:2012-10-24 06:44:31
【问题描述】:

在我的 iOS 应用程序中,当用户在视图中按下按钮时,控制器中会触发 NSTimer。 在第三个刻度上,我想让视图的背景闪烁。

我已经在视图中写了闪烁功能(它不应该写在控制器中,是吗?)

我可以通过

在控制器中触发这个闪烁功能
LostView *lostView = (LostView* ) self.view;
[lostView blinkBackground];

但这很糟糕,不是吗?控制器不应该知道视图也不知道函数的名称? 我想应用 MVC 模式

观察者/可观察模式是否适用于这种情况?

谢谢

【问题讨论】:

    标签: ios model-view-controller design-patterns observer-pattern


    【解决方案1】:

    不,一点也不差。看起来您实现了使视图在视图本身中闪烁的方法。这很好,因为它与视觉表示(即 MVC 的视图部分)直接相关。您可以在需要闪烁视图的任何其他应用程序中重复使用该视图。

    由于闪烁是由NSTimer 触发的,我认为它在某种程度上取决于此特定应用程序中的逻辑。视图不能(不应该)知道它什么时候应该闪烁(只有当闪烁是与它或 UI 的其他相关部分交互的直接反应时才会出现这种情况 - 或者它是更多复杂元素,例如倒数计时器,当它到达最后 10 秒左右时,它总是开始闪烁。例如,UIButton 提供了在被触摸时自动突出显示它的可能性。)

    但如果闪烁是您的应用程序中某些状态转换的反应,可能有一些新数据可用或倒计时即将到期,那么控制器是触发它的完全合理的地方。

    【讨论】:

      猜你喜欢
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多