2015-04-21 5 views
0

В настоящее время я работаю над усовершенствованием приложения iOS, над которым я сейчас работаю, добавив push-уведомления. Эти push-уведомления отправляются людям, чтобы уведомить их о том, что в приложении есть действие.Push Notifications: перейти к ViewController из AppDelegate

В настоящее время я работаю над реализацией «когда вы находитесь в приложении и получаете уведомление» - часть: ReceivedRemoteNotification.

Теперь, поскольку этот метод должен быть реализован внутри AppDelegate, я не могу просто сказать NavigationController.PushViewController (viewController, true);. Создание нового NavigationController не сработало.

Итак, теперь мне интересно: есть ли способ получить NavigationController, который был инициализирован (потому что я уже открыл приложение), чтобы затем использовать метод PushViewController?

Или есть другой способ перейти к ViewController из AppDelegate?

+0

Не могли бы вы попытаться отправить NSNotification из APPDelegate, когда вы получите push-уведомление и наблюдаете за этим в своем текущем контроллере (или NavigationController) и сделаете свое нажатие тогда? – Bisca

ответ

0

Попробуйте с этим, чтобы получить ссылку на корневой контроллер в приложении

(надеюсь, его контроллер нав вы ищете):

//////////////AppDelegate.m 

UINavigationController *currentNavController = (UINavigationController*)self.window.rootViewController 
0

В Xamarin/C# контроллер вид корень ваше приложение:

UIViewControler rootViewController = this.window.RootViewController; 

Это должно выглядеть знакомым с вашего переопределения FinishedLaunching в AppDelegate. Оттуда вы сможете ориентироваться в иерархии представлений, чтобы привести своего пользователя в нужное место.

+0

К сожалению, RootViewController - это настраиваемый контроллер, в котором есть 4 навигационных контроллера. Мне не удалось определить, в каком режиме NavigationController я работаю. –

+0

Даже если это настраиваемый контроллер, вы можете отличить его от rootViewController до вашего настраиваемого типа, а затем создать там методы, которые позволят вам делать все, что захотите. Поэтому, если ваше push-уведомление потребовало, чтобы определенный экран находился на втором навигационном контроллере в вашем контроллере клиента, вы должны иметь возможность создать метод на пользовательском контроллере, чтобы сделать именно это. –

+0

А, я вижу! Да, это то, о чем я никогда не думал! Благодаря! –

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