1

我有一个应用程序,它是表格视图中的项目列表,并为表格视图上的每个项目显示详细视图控制器。它还将 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;
}

有人可以帮我弄这个吗?

4

2 回答 2

0

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

我会尝试将你所有的 UI/MMDrawer 代码移到它自己的方法中。然后在您的应用程序委托中调用 openURL 时,延迟调用您的新方法。

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

 [self performSelector:@selector(showDetailView) withObject:nil afterDelay:0.3];
于 2016-05-25T14:02:28.260 回答
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 实例。

于 2019-03-22T09:49:47.233 回答