Нажатие контроллера представления из AppDelegate - класс RESideMenu

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

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

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

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];

Кто-нибудь может помочь?

---------------------** Обновить

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

[mainNavigation pushViewController:detailVC animated:YES];

1 ответ

Решение

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

ОБНОВИТЬ

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

пример

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

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

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

ОБНОВЛЕНИЕ 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];
Другие вопросы по тегам