Chris
Chris

Reputation: 27384

iPhone applicationWillResignActive - how to notify current UIView

I want to pause a timer on my game screen when the iPhone is locked etc. My question is what is the best method to notify the current UIView, which the AppDelegate has no direct access to?

Upvotes: 2

Views: 2252

Answers (1)

Conrad Shultz
Conrad Shultz

Reputation: 8808

1) Your timer should probably not be managed by the view but by the view's controller. The timer itself is not an inherent part of your UI, only the timer's display is. (What happens if you want to have the timer continue after a view is removed, for example?)

2) Any object (view or controller included) can independently listen for the appropriate notification. For example, in your view controller (or view code, if you choose to go that route):

    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(pauseTheTimer:)
                                             name:UIApplicationWillResignActiveNotification
                                           object:nil];

Then implement a pauseTheTimer: method that will handle the notification. (Since there is only one UIApplication object, you can use nil for the object, as shown.)

This approach nicely decouples your app delegate from the views and view controllers.

(Oh, don't forget to stop observing when your view is unloaded or deallocated. Failure to do so can and will lead to crashes.)

Upvotes: 3

Related Questions