0

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

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

我可以通过以下方式触发控制器中的闪烁功能

LostView *lostView = (LostView* ) self.view;
[lostView blinkBackground];

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

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

谢谢

4

1 回答 1

2

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

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

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

于 2012-11-04T01:19:05.900 回答