0

私の iOS アプリケーションでは、ユーザーがビューでボタンを押すと、コントローラーで NSTimer がトリガーされます。3 番目の目盛りで、ビューの背景を点滅させたいと思います。

ビューに点滅機能を書きました(コントローラーに書くべきではありませんか?)

コントローラーでこの点滅機能をトリガーするには、

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

でもまずいですね。コントローラーは、ビューも関数の名前も知らないはずですか? MVCパターンを適用したい

オブザーバー/オブザーバブル パターンはこの状況に適用できますか?

ありがとう

4

1 に答える 1

2

いいえ、まったく悪くありません。ビュー自体でビューを点滅させるメソッドを実装したようです。これは視覚的表現 (つまり、MVC のビュー部分) に直接関連しているため、問題ありません。点滅するビューを必要とする他のアプリでそのビューを再利用できます。

その点滅はによってトリガーされるためNSTimer、この特定のアプリのロジックに何らかの形で依存していると思います。ビューは、いつ点滅するべきかを知ることができません (すべきではありません) (これは、その点滅が、それまたは UI の別の関連部分との相互作用の直接的な反応であった場合にのみ当てはまります。たとえば、最後の 10 秒程度に達すると常に点滅を開始するカウントダウン タイマーなどの複雑な要素UIButton

しかし、その点滅がアプリの何らかの状態遷移の反応である場合、新しいデータが利用可能になるか、カウントダウンの期限が切れようとしている場合、コントローラーはそれをトリガーするのに完全に合理的な場所です。

于 2012-11-04T01:19:05.900 に答える