2

ビューでビューコントローラーを作成しています。ビューには timerView という名前が付けられ、timerLabel が含まれています。ラベルは毎秒 NSTimer によって更新されています。その正常に動作します。

しかし、私がやりたいことは、他のビューコントローラーが表示されるたびに、timerView を使用できるようにし、NSTimer で定期的に更新する必要があることです。

ビューコントローラーごとに timerView、timerLabel、および NSTimer を作成するソリューションがあります。次に、最後のビュー コントローラー タイマーの値で更新する必要があります。しかし、それは実現不可能です。

単一のビューのみを作成し、それをすべてのコントローラーで使用して、1 秒ごとに定期的に更新するにはどうすればよいですか。

任意の提案をいただければ幸いです。

4

2 に答える 2

2

単一のビューのみを作成し、すべてのコントローラーでそれを使用して、1 秒ごとに定期的に更新したいだけです。

なんで?単一のタイマー ビューを使用する代わりに、必要な数だけ作成し、単一のタイマーを使用してそれらを駆動します。あるビューからタイマー ビューを削除して、これから表示される別のビューに追加することは可能ですが、実際には何も役に立たないと思います。

現在の経過時間または残り時間がアプリ全体にとって重要である場合は、その情報の単一のソースが必要です。つまり、単一のタイマーを用意し、それを使用して、表示されているタイマー ビューを駆動する必要があります。これを行う簡単な方法は、タイマーのアクションに通知を投稿させ、表示されているタイマー ビューにその通知をリッスンさせることです。これにより、タイマーとタイマー ビューの間の結合が最小限に抑えられます。タイマーはタイマー ビューについて知る必要がなく、タイマー ビューはタイマーに直接アクセスする必要もありません。

タイマー ビューが表示されたら (更新を開始するように) 通知のリッスンを開始し、表示されなくなったら通知を停止するようにしてください (表示されていない場合は更新する必要がないため)。

于 2013-06-17T06:15:13.993 に答える