从 AppDelegate 推送视图控制器 - RESideMenu class
Pushing view controller from AppDelegate - RESideMenu class
我正在使用 RESideMenu class 并在此 class 导航控制器的内容中使用,并在左侧菜单中使用一些视图。
该导航为内容主视图和详情视图。
我想在收到通知时从 app delegate 推送详细信息视图,所以我写了那个,但它不起作用。
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];
您没有使用 "current navigation controller" 并推送到详细信息。您正在实例化 new mainNavigation(不是当前的)并推送到详细信息。您需要获取 current 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];
我正在使用 RESideMenu class 并在此 class 导航控制器的内容中使用,并在左侧菜单中使用一些视图。
该导航为内容主视图和详情视图。
我想在收到通知时从 app delegate 推送详细信息视图,所以我写了那个,但它不起作用。
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];
您没有使用 "current navigation controller" 并推送到详细信息。您正在实例化 new mainNavigation(不是当前的)并推送到详细信息。您需要获取 current 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];