1

我有一个显示多个选项卡的选项卡栏应用程序。在通知的情况下,我希望将用户定向到能够推送“返回”的视图控制器。当我的应用程序只是导航控制器应用程序时,我在 AppDelegate 中使用了以下代码:

UIStoryboard *mainStoryboard = self.window.rootViewController.storyboard;
DetailViewController *detailViewController = (DetailViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"detailViewController"];
[(UINavigationController*)self.window.rootViewController pushViewController:detailViewController animated:NO];

在我将我的应用程序转换为 Tab Bar 之前,这段代码可以正常工作。似乎“self.window.rootViewController”不再是“UINavigationController”类型,因此调用“pushViewController”会生成一个异常,说方法不存在。有什么方法可以在标签栏应用程序上进行这项工作?

谢谢

4

1 回答 1

2

您应该将通知控制器显示为模态 ( presentViewController:animated:completion:),并在该控制器内提供关闭它的方法,可能是顶部栏上的按钮。

编辑:感谢 Dimitry 的回答,我能够走上正轨。为了保留顶部导航栏和底部工具栏,我只需要做一个小技巧。我通过使用“UINavigationController”实例来做到这一点。这是代码:

UIStoryboard *mainStoryboard = self.window.rootViewController.storyboard;
DetailViewController *detailViewController = (DetailViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"detailViewController"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
navigationController.navigationBar.tintColor = [UIColor blackColor];
navigationController.toolbar.tintColor = [UIColor blackColor];
[self.window.rootViewController presentViewController:navigationController animated:YES completion:NULL];
于 2013-02-09T00:12:57.957 回答