2013-10-14 4 views
0

У меня есть приложение, которое получает push-уведомления.didReceiveRemoteNotification push viewcontroller from tabbarcontroller

В моей раскадровке у меня есть панель управления, которая имеет 4 подробных вида (с встроенным контроллером навигации).

Когда я получаю нажатие, я могу установить правильный бар-контроллер панели. Но я хочу перейти по всей линии к моему подробному представлению.

NSString *storyboardId = @"TabFirst"; 
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:storyboardId]; 
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
tabBar.selectedIndex = 2; 

С этим я получаю правильное табулирование. Но как я могу подтолкнуть его к правильному подробному представлению? И мне также нужно отправить объект с ним (чтобы он мог отображать правильные данные).

Спасибо.

+0

У меня есть этот код в моем приложении делегат, метод didReciveRemoteNotification. –

+0

, пожалуйста, объясните «спуститесь по всей линии до моего детального вида» ?? –

ответ

0

Я думаю, вы еще не поняли UINavigationBarController правильно. Это похоже на стек, в который вы нажимаете и поп-элементы.

Можно ли нажать 8-й элемент непосредственно на стек без предыдущих 7 в стеке?

Вам необходимо создать экземпляр каждого контроллера и нажать его вручную через ваш алгоритм.

 
-(void)didReciveRemoteNotification{ 

    [tabBarController.viewcontroller objectAtIndex:2/*Index of your navigation controller*/]; 
    // once you get a refrence to you nav you have to push your root view controller and call 
    // call messages on each and every view controller which does the transition. 
    UITableViewController *tableVC = [[UITableViewController alloc] init]; 
    [self.navigationController pushViewController:tableVC]; 

    // trigger your events simply with a single message and let every view 
    // controller load it successive viewcontrollers. 


    [tableVC didSelectRowAtIndex .. ]; 

} 

Это также загружает ваши данные. Короче говоря, вам нужна триггерная цепочка событий, за которой следует ваш пользователь. Но у вас будут данные из push-уведомления, которые расскажут вам, как загружать эти представления. Обычно нет необходимости запускать эту цепочку событий, если вы следовали правильному шаблону chain of responsibility patter или MVC. Если его трудно для вас, то что-то не так с тем, как вы разработали ваши контроллеры.

Итого: Загрузить состояние приложения через цепочку сообщений в зависимости от данных, полученных от push-уведомления.

Примечание: Кроме того, если вы нашли какой-нибудь другой способ, который может нарушить инвариантность системы

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