iOS- 从 AppDelegate 导航到幻灯片菜单中的某个项目
iOS- navigate From AppDelegate to certain item in slidemenu
我使用 swrevealviewcontroller 将幻灯片菜单添加到我的应用程序,
假设我们在图片中有这样的菜单
我需要从我的 appDelegate 导航到菜单中的任何项目(例如:地图视图控制器)
我的尝试:
在我的 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 控制器时,它在 viewdidload 中崩溃
- (void)viewDidLoad
{
[super viewDidLoad];
_nav_bar.target = self.revealViewController;
_nav_bar.action = @selector(revealToggle:);
// its crash here
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}
my storyboard
导航控制器 --> 主页视图 --> 显示视图控制器
显示视图控制器有两个视图 --> 滑动菜单
导航控制器 --> 前视图
我的幻灯片菜单有一些如图所示的项目
我需要从我的 appDelegate 导航到其中一项
在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
之后,加载revealViewController的frontViewController和realViewController。并且可以设置frontViewController的rootViewController,它是一个navigationController
终于找到答案了
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;
我使用 swrevealviewcontroller 将幻灯片菜单添加到我的应用程序,
假设我们在图片中有这样的菜单 我需要从我的 appDelegate 导航到菜单中的任何项目(例如:地图视图控制器)
我的尝试:
在我的 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 控制器时,它在 viewdidload 中崩溃
- (void)viewDidLoad
{
[super viewDidLoad];
_nav_bar.target = self.revealViewController;
_nav_bar.action = @selector(revealToggle:);
// its crash here
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}
my storyboard
导航控制器 --> 主页视图 --> 显示视图控制器
显示视图控制器有两个视图 --> 滑动菜单 导航控制器 --> 前视图
我的幻灯片菜单有一些如图所示的项目
我需要从我的 appDelegate 导航到其中一项
在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
之后,加载revealViewController的frontViewController和realViewController。并且可以设置frontViewController的rootViewController,它是一个navigationController
终于找到答案了
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;