2011-01-13 3 views
5

Мое приложение имеет панель вкладок с двумя разными видами. На первой вкладке его представление имеет непрерывную анимацию цикла.iphone: перезапуск анимации цикла после просмотра скрыт, затем снова появляется?

Когда я нажимаю на вторую вкладку, вернитесь к первой, анимация остановилась. Я знаю, что могу начать его снова в методе viewWillAppear:, но проблема больше. В частности, анимация также остановится, если приложение перейдет в фоновое состояние, а затем вернется на передний план. В этом случае viewWillAppear не вызывается при переходе на передний план, поэтому метод viewWillAppear ничего не сделает.

Каков наилучший способ справиться с этой ситуацией?

Спасибо.

ответ

4

Чтобы сохранить инкапсуляцию, вы по праву не хотите, чтобы ваш AppDelegate знал, какие виды необходимо возобновить анимации. Но вы можете иметь представление, которое содержит регистр анимации для соответствующего уведомления (например, в методевида) и перезапустить анимацию самостоятельно.

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
     selector:@selector(startAnimation) 
      name:UIApplicationWillEnterForegroundNotification 
     object:nil]; 

... и не забудьте дерегистрировать от центра уведомлений в методе dealloc.

+0

Гораздо лучший способ сделать это! Благодарю. –

0

Вы можете настроить анимацию для продолжения в методе applicationWillEnterForeground из AppDelegate. Если у вас есть ссылка на контроллер представления первой вкладки в AppDelegate, просто вызовите метод viewWillAppear контроллера вида из AppDelegate.

+0

Да, это то, что я понял. Мне не понравилось это решение, потому что это заставляет меня выставлять много функций диспетчера представлений для делегата приложения, которые, на мой взгляд, должны быть скрыты. (Зачем делегату приложения нужно знать, есть ли у моих диспетчеров просмотра анимации или нет?) Но это работает, поэтому я думаю, что сейчас это путь. –

Смежные вопросы