Переход к ViewController из AppDelegate?

Есть ли предпочтительный метод, когда, получив уведомление в application:didReceiveLocalNotification:, я привожу пользователя к определенному контроллеру представления*?

Например, если у меня есть контроллеры представления A, B, C и D, приходит уведомление, приложение работает в фоновом режиме с пользователем на экране A, B или C, и я нужно вывести их на экран D и вернуться к предыдущему экрану, когда они закончат.

Кажется, что один метод делает A, B, C делегатами D, подключая их к сегментам в раскадровке и выполняя PerformSegueWithIdentifier: в application:didReceiveLocalNotification:, но это плохо масштабируется, если у меня есть ex. 60 экранов.

Есть ли лучший/лучший способ вывести контроллер представления на экран из AppDelegate и вернуться туда, где пользователь был ранее, когда они закончат?

*Обратите внимание, что этого не произойдет, если пользователь в данный момент находится в приложении, чтобы не мешать работе.


person user1366911    schedule 18.01.2013    source источник


Ответы (1)


Обычно такое поведение лучше всего достигается с помощью контроллеров модального представления.

Однако я бы не вытаскивал контроллер модального представления из appDelegate, а вместо этого создавал бы подклассы A, B и C одного и того же класса. Этот класс будет иметь код для обработки уведомления, показывая контроллер модального представления (с D), который при закрытии покажет контроллер представления, где вы находились, когда пришло уведомление.

Хотя я не понимаю твоего последнего предложения. Если этого не произойдет, когда пользователь находится внутри приложения, почему вы пытаетесь вернуть его на предыдущий экран?

person Fábio Oliveira    schedule 18.01.2013
comment
Спасибо, сэр, отлично работает! Не беспокойтесь о последнем предложении; бессмысленный. - person user1366911; 18.01.2013