iOS以编程方式更改AppDelegate中的视图

Tom*_*Tom 3 uitabbarcontroller uinavigationcontroller ios appdelegate

我试图在特定推送通知发生时更改视图,我取得了一些小小的成功.(使用推送通知解析,适用于应用程序打开和关闭的时间).

我的故事板看起来像这样,我正在尝试将AppDelegate中的视图更改为DetailViewController. 在此输入图像描述

现在我可以通过更改根控制器来更改视图,但我只能连接我的选项卡视图或导航而不是两者.

 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
    DetailViewController *detail = (DetailViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"detail"];
    [detail setDetailItem:StreamData[2]];

    self.window.rootViewController = detail;
Run Code Online (Sandbox Code Playgroud)

当然,(下面)的使用仅适用于其他控制器.

[self.navigationController pushViewController:detail animated:YES];
Run Code Online (Sandbox Code Playgroud)

我想知道这是否可以从AppDelegate实现,同时维护底部的tabbar和顶部的导航?

我最初的工作是设置从AppDelegate到可从所有控制器访问的全局变量的触发器,然后使用viewDidAppear之类的东西来检查它们是否需要更改.这似乎太资源密集,但它维护我的布局.

我的问题与此类似:在通知后,从app delegate中的标签栏中推送视图控制器

Ani*_*ese 5

我已经解决了你的问题.创建了一些场景,不确定它会在你的情况下起作用.无论如何试一试

我的故事板

在此输入图像描述

我做了什么

 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

[(UITabBarController *)self.window.rootViewController setSelectedIndex:1];
UINavigationController *nav = [[(UITabBarController *)self.window.rootViewController viewControllers]objectAtIndex:1];
UIViewController *detail = [mainStoryboard instantiateViewControllerWithIdentifier:@"detail"];
[nav pushViewController:detail animated:NO];
Run Code Online (Sandbox Code Playgroud)

这为我提供了详细视图控制器,其中一个按钮作为带有标签栏和导航控制器的第一个视图