我有一个应用程序,它是表视图中的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;
}
有人可以帮我弄这个吗?
我发现通过深度链接和新的iOS9菜单快捷方式,通常需要一点延迟来显示或操作UI组件。
我会尝试将所有UI / MMDrawer代码移动到自己的方法。然后,当您的app delegate中调用openURL时,请在延迟时调用新方法。
所以在ObjC中它看起来像这样:
[self performSelector:@selector(showDetailView) withObject:nil afterDelay:0.3];
你解决了这个问题吗?
我多次尝试过。最后我发现它今天适合我:
[((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];
这两种写作是一样的。
这里是一个DetailRestaurantViewController实例。