iOS - перейдите от AppDelegate к определенному элементу в слайд-меню

Я использую srevealviewcontroller, чтобы добавить слайд-меню в свое приложение,

введите здесь описание изображения

Давайте представим, что у нас есть меню, подобное этому на рис. Мне нужно перейти от My appDelegate к любому элементу в меню (например, Map View Controller)

мои попытки:

в моем appDelegate.m

 UIStoryboard *storyboard =[UIStoryboard storyboardWithName:@"Main" bundle:nil];

    InforView *school_view = [storyboard instantiateViewControllerWithIdentifier:@"info_view"];

   [self.window  makeKeyAndVisible];

   [self.window.rootViewController presentViewController:school_view animated:YES completion:NULL];

При переходе на InforView Controller происходит сбой в viewdidload.

- (void)viewDidLoad
{
    [super viewDidLoad];
    _nav_bar.target = self.revealViewController;
    _nav_bar.action = @selector(revealToggle:);

 // its crash here 
    [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}

моя раскадровка

навигационный контроллер -> домашний вид -> открыть контроллер просмотра

показать Контроллер просмотра имеет два представления -> контроллер навигации по слайд-меню -> вид спереди

в моем слайд-меню есть некоторые элементы, как показано на рис.

Мне нужно перейти от моего appDelegate к одному из этих элементов

введите здесь описание изображения


person Mina Fawzy    schedule 21.01.2015    source источник
comment
поставьте там точку останова... и убедитесь, что self.revealViewController не равен нулю...   -  person Dipen Chudasama    schedule 21.01.2015
comment
self.revealViewController равен нулю   -  person Mina Fawzy    schedule 21.01.2015
comment
да поэтому и вылетает...   -  person Dipen Chudasama    schedule 21.01.2015
comment
Я знаю, но как я могу это исправить   -  person Mina Fawzy    schedule 21.01.2015
comment
Я думаю, я думаю, что доступ к нему бросает мой SWRevealViewController, а затем переходит к элементу слайд-меню   -  person Mina Fawzy    schedule 21.01.2015
comment
скользящее меню self.revealViewController ?   -  person Dipen Chudasama    schedule 21.01.2015
comment
Давайте продолжим обсуждение в чате.   -  person Dipen Chudasama    schedule 21.01.2015
comment
Может быть, вы можете попробовать: self.window.rootViewController = school_view; [self.window makeKeyAndVisible];   -  person weso    schedule 21.01.2015
comment
Еще нет, не могли бы вы дать мне предложение   -  person Mina Fawzy    schedule 26.01.2015
comment
Вам нужно присвоить self.revealViewController его фактическое значение. Кроме того, почему вы переходите из AppDelegate?   -  person Midhun MP    schedule 09.02.2015
comment
Я получаю уведомление, поэтому я хочу перейти в нужное место, чтобы открыть это уведомление, не могли бы вы добавить мне код   -  person Mina Fawzy    schedule 09.02.2015
comment
@minafawzy: Разве вы не можете просто прослушать уведомление от класса SWRevealController? Вместо AppDelegate?   -  person Midhun MP    schedule 10.02.2015
comment
уведомление имеет три условия: одно, если приложение неактивно, активно или приложение закрыто, могу ли я обработать все это вне AppDelegate   -  person Mina Fawzy    schedule 10.02.2015
comment
@minafawzy да, вы можете: developer.apple.com/library/ios/documentation/UIKit/Reference/   -  person Edwin Abraham    schedule 10.02.2015
comment
@EdAbe моя проблема с библиотекой, я перехожу к одному из пунктов моего слайд-меню, это крах   -  person Mina Fawzy    schedule 10.02.2015


Ответы (2)


Наконец я нахожу ответ

UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    // this any item in list you want navigate to 
Home_tableView *home = (Home_tableView *) [storyboard instantiateViewControllerWithIdentifier:@"home_view"];

SlideMenu *slidemenu = (SlideMenu *)[storyboard instantiateViewControllerWithIdentifier:@"Menu_view"];

UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:home];

UINavigationController *smVC = [[UINavigationController alloc]initWithRootViewController:slidemenu];

// define rear and frontviewcontroller  
SWRevealViewController *revealController = [[SWRevealViewController alloc]initWithRearViewController:smVC frontViewController:nav];

// make it as root 
self.window.rootViewController = revealController;
person Mina Fawzy    schedule 17.02.2015

В проекте SidebarDemo вы можете использовать следующий код для отображения MapViewController при начальной загрузке.

SWRevealViewController *revealViewController = (SWRevealViewController*)self.window.rootViewController;
UIStoryboard *storyboard =[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
MapViewController *mapVC = [storyboard instantiateViewControllerWithIdentifier:@"MapID"];

[self.window  makeKeyAndVisible];

UINavigationController* navController = (UINavigationController*)revealViewController.frontViewController;
[navController setViewControllers: @[mapVC] animated: NO ];
[revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];

После makeKeyAndVisible загружаются frontViewController и realViewController из manifestViewController. И вы можете установить rootViewController для frontViewController, который является навигационным контроллером.

person gabbler    schedule 11.02.2015
comment
Спасибо за ответ, но этот код дает сбой. Я получил эту ошибку libc++abi.dylib: завершение с необработанным исключением типа NSException - person Mina Fawzy; 11.02.2015
comment
Можете ли вы показать, где возникает ошибка, и трассировку стека исключений? - person gabbler; 11.02.2015
comment
Здесь возникает ошибка UINavigationController *navController = (UINavigationController *)revealViewController.frontViewController; стек ошибок Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[UINavigationController frontViewController]: нераспознанный селектор отправлен экземпляру 0x17542050» - person Mina Fawzy; 11.02.2015
comment
Является ли раскрытиеViewController в вашем коде типом SWRevealViewController? - person gabbler; 11.02.2015
comment
выявитьViewController является корневым контроллером раскадровки, похоже, что ваш корневой контроллер представления является контроллером навигации, а не SWRevealViewController, если это так, попробуйте (UINavigationController *)[revealViewController frontViewController]. - person gabbler; 11.02.2015
comment
Давайте продолжим обсуждение в чате. - person Mina Fawzy; 11.02.2015