我试图在特定推送通知发生时更改视图,我取得了一些小小的成功。 (使用推送通知解析,适用于应用程序打开和关闭的时间)。
我的故事板看起来像这样,我正在尝试将AppDelegate中的视图更改为DetailViewController。
现在我可以通过更改根控制器来更改视图,但我只能连接我的标签视图或导航而不是两者。
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
DetailViewController *detail = (DetailViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"detail"];
[detail setDetailItem:StreamData[2]];
self.window.rootViewController = detail;
当然,(下面)的使用仅适用于其他控制器。
[self.navigationController pushViewController:detail animated:YES];
我想知道在维护底部的标签栏和顶部的导航栏时是否可以通过AppDelegate实现这一点?
我最初的工作是将AppDelegate的触发器设置为可从所有控制器访问的全局变量,然后使用viewDidAppear之类的东西来检查它们是否需要更改。这看起来太资源密集,但它维护我的布局。
我的问题与此类似:pushing view controller inside a tab bar from app delegate, after a notification
答案 0 :(得分: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];
这为我提供了详细视图控制器,其中一个按钮作为带有标签栏和导航控制器的第一个视图