2015-11-25 1 views
0

Я использую класс RESIDMenu и использую содержимое этого навигационного контроллера этого класса и в левом меню с использованием некоторого вида.Пульт управления отображением из AppDelegate - класс RESIDMenu

Эта навигация представляет собой представление основного вида и деталей содержания.

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

NSString *URL = @"any url"; 


UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UINavigationController *mainNavigation = (UINavigationController *) [storyboard instantiateViewControllerWithIdentifier:@"MainNavigation"]; 



MainViewController *mainVC = (MainViewController *) [storyboard instantiateViewControllerWithIdentifier:@"MainViewController"]; 
DetailViewController *detailVC = (DetailViewController *) [storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"]; 

[mainNavigation setViewControllers:@[mainVC, detailVC]]; 
[mainNavigation popViewControllerAnimated:YES]; 

[detailVC setNewsLink:URL]; 
[mainNavigation pushViewController:detailVC animated:YES]; 

Любой может помочь?

enter image description here

--------------------- ** обновление

RESideMenu *sideMenu = (RESideMenu *) [storyboard instantiateViewControllerWithIdentifier:@"RootViewController"]; 
UINavigationController *mainNavigation = (UINavigationController *) [sideMenu contentViewController]; 

[mainNavigation pushViewController:detailVC animated:YES]; 
+0

Какое «не работает»? Если вы поставили там точку останова, вы видите все контроллеры в качестве допустимых объектов? –

+0

Да, я вижу все контроллеры и объекты, но просмотр деталей не нажат –

+0

Любые сообщения в консоли отладки? –

ответ

1

Вы не принимаете "текущий контроллер навигации" и нажав на «Детали». Вы создаете новый mainNavigation (не текущий) и нажав на Детали. Вы должны получить текущее mainNavigation (например, хранение при запуске, например), а затем переход к новому DetailViewController.

UPDATE

В этом случае, вы используете RESideMenu. Вы должны принять contentViewController (который может быть UINavigatorController) и нажать на него.

Пример

DetailViewController *detailVC = (DetailViewController *) [storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"]; 

NSString *URL = @"any url"; 
[detailVC setNewsLink:URL]; 

[((UINavigationController *)self.sideMenuViewController.contentViewController) pushViewController:detailVC animated:YES]; 

UPDATE 2

Возможно, в вашем AppDelegate, то RESideMenu ваш self.window.rootViewController. Затем:

DetailViewController *detailVC = (DetailViewController *) [storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"]; 

NSString *URL = @"any url"; 
[detailVC setNewsLink:URL]; 

RESideMenu *sideMenu = (RESideMenu *)self.window.rootViewController; 
[((UINavigationController *)sideMenu.contentViewController) pushViewController:detailVC animated:YES]; 
+0

Все еще не работает, и когда я положил перерыв, все показало правильно, см. Код обновления –

+0

В вашей строке: «RESIDMenu * sideMenu = (RESideMenu *) [раскадровка instantiateViewControllerWithIdentifier: @" RootViewController "];" вы создаете НОВЫЙ RESIDMENU, не получив текущий. Вы должны сохранить его в свойстве или взять свой self.window.rootViewController (это может быть ваше меню). См. Мой обновленный ответ – nigelman