从TabBar应用程序推送AppDelegate上的ViewController

时间:2013-02-08 23:21:54

标签: objective-c uinavigationcontroller uitabbarcontroller storyboard pushviewcontroller

我有一个显示多个标签的标签栏应用程序。我是通知的情况我希望用户被定向到能够推“返回”的视图控制器。 当我的应用程序只是导航控制器应用程序时,我在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”会生成一个异常,说方法不存在。 有什么方法可以在Tab Bar应用程序上工作吗?

由于

1 个答案:

答案 0 :(得分: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];