我有一个应用程序,它是表视图中的itens列表,并向表视图中的每个项目显示详细视图控制器。它还将MMDrawerController(根视图控制器)实现为带有故事板的侧边菜单。 我正在深入链接我的应用程序并使用App Delegate中的应用程序开放URL源应用程序注释方法来处理它。所以,我想使用MMDrawerController从这个方法推出一个详细视图控制器,我遇到了一些麻烦。 看看一些代码:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
DetalheRestauranteViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"detalheRest"];
MMDrawerController* drawerController = (MMDrawerController *)self.window.rootViewController;
// If I use this nothing happens
[drawerController.centerViewController.navigationController pushViewController:vc animated:YES];
// If I use this nothing happens
[((MMDrawerController *)self.window.rootViewController).centerViewController.navigationController pushViewController:vc animated:YES];
// If I use this I got the unrecognized selector error
[(UINavigationController*)self.window.rootViewController pushViewController:vc animated:NO];
return YES;
}
有人可以帮我这个吗?
答案 0 :(得分:0)
我发现通过深度链接和新的iOS9菜单快捷方式,显示或操作UI组件通常需要很小的延迟。
我会尝试将所有UI / MMDrawer代码移动到自己的方法中。然后,当您的app delegate中调用openURL时,请在延迟时调用新方法。
所以在ObjC中它看起来像这样:
[self performSelector:@selector(showDetailView) withObject:nil afterDelay:0.3];
答案 1 :(得分:0)
您解决了这个问题吗?
我尝试了很多次。终于,我发现今天它对我来说很好用:
[((UINavigationController *)((MMDrawerController *)self.window.rootViewController).centerViewController) pushViewController:viewController animated:YES];
或
MMDrawerController *mvc = (MMDrawerController *)self.window.rootViewController;
UINavigationController *nvc = (UINavigationController *)mvc.centerViewController;
[nvc pushViewController:vc animated:YES];
这两种写作是相同的。
这里vc是一个DetalheRestauranteViewController实例。