Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在控制器中,如何通知视图?_Ios_Model View Controller_Design Patterns_Observer Pattern - Fatal编程技术网

Ios 在控制器中,如何通知视图?

Ios 在控制器中,如何通知视图?,ios,model-view-controller,design-patterns,observer-pattern,Ios,Model View Controller,Design Patterns,Observer Pattern,在我的iOS应用程序中,当用户按下视图中的按钮时,会在控制器中触发NSTimer。 在第三个滴答声中,我想介绍一下视图闪电的背景 我已经在视图中编写了闪烁功能(不应该在控制器中编写,是吗?) 我可以通过以下方式触发控制器中的闪烁功能: LostView *lostView = (LostView* ) self.view; [lostView blinkBackground]; 但这很糟糕,不是吗?控制器不应该知道视图,也不应该知道函数的名称? 我想应用MVC模式 观察者/观察者模式是否适用于

在我的iOS应用程序中,当用户按下视图中的按钮时,会在控制器中触发NSTimer。 在第三个滴答声中,我想介绍一下视图闪电的背景

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

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

LostView *lostView = (LostView* ) self.view;
[lostView blinkBackground];
但这很糟糕,不是吗?控制器不应该知道视图,也不应该知道函数的名称? 我想应用MVC模式

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


谢谢

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

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

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