0

在我的iOS應用程序中,當用戶在視圖中按下按鈕時,NSTimer在控制器中被觸發。 在第三個勾號上,我想讓視圖的背景變成bliking。NSTimer在控制器中,如何通知視圖?

我寫的閃爍功能,在視圖中(它should't寫在控制器,它應該?)

我可以觸發控制器該閃爍功能

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

但這很糟糕,不是嗎?控制器不知道該視圖,也不知道該功能的名稱? 我想應用MVC模式

在這種情況下是否適用觀察者/可選模式?

謝謝

回答

2

不,一點都不差。它看起來像你實現了使視圖在視圖中閃爍的方法。這很好,因爲它與視覺表示(即MVC的視圖部分)直接相關。您可以在需要閃爍視圖的任何其他應用程序中重複使用該視圖。

由於閃爍是由NSTimer觸發的,我認爲它在某種程度上取決於此特定應用中的邏輯。視圖不能(不應該)知道它應該在什麼時候閃爍(只有當閃爍是與它的交互或UI的另一個相關部分的直接反應時纔是這種情況 - 或者它是更多複雜的元素,例如倒數計時器,當它達到最近10秒左右時總是開始閃爍,例如UIButton提供了在觸摸時自己突出顯示自己的可能性。)

但是如果該閃爍是反應在您的應用程序中進行某種狀態轉換,可能會有一些新數據可用或倒計時即將到期,控制器是一個非常合理的觸發區域。

相關問題