MMDrawerController:推送viewcontroller表单应用程序打开URL

问题描述 投票:1回答:2

我有一个应用程序,它是表视图中的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;
}

有人可以帮我弄这个吗?

ios objective-c deep-linking mmdrawercontroller
2个回答
0
投票

我发现通过深度链接和新的iOS9菜单快捷方式,通常需要一点延迟来显示或操作UI组件。

我会尝试将所有UI / MMDrawer代码移动到自己的方法。然后,当您的app delegate中调用openURL时,请在延迟时调用新方法。

所以在ObjC中它看起来像这样:

 [self performSelector:@selector(showDetailView) withObject:nil afterDelay:0.3];

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];

这两种写作是一样的。

这里是一个DetailRestaurantViewController实例。

© www.soinside.com 2019 - 2024. All rights reserved.