如何通过 TabBarController => NavbarController 从 Appdelegate 呈现视图控制器

Posted

技术标签:

【中文标题】如何通过 TabBarController => NavbarController 从 Appdelegate 呈现视图控制器【英文标题】:How to present view controller from Appdelegate via TabBarController => NavbarController 【发布时间】:2017-03-27 14:06:49 【问题描述】:

如何向视图控制器展示来自 appdelegate 的所有堆栈。 TabBarContoller 是 rootviewcontoller。 我在 TabBarController 上有 4 个选项卡,每个选项卡都是导航控制器。 所以我需要像这样呈现视图控制器。 tabBar => navBar => mainViewContoller => aViewController => bViewController; 而且我应该能够使用导航回到主视图控制器或通过标签栏导航。

我有一个故事板。

我尝试了很多类似问题推荐的解决方案,但没有帮助。

【问题讨论】:

【参考方案1】:

您应该只通过情节提要来实现这一点。

我使用appcoda尝试了示例项目。我成功运行它。我向你展示了故事板设计。

它使用多个视图控制器实现。

【讨论】:

感谢您的评论,但我需要通过推送包含所有内容的特定视图控制器来从 appdelegate 呈现。 那么你应该使用 xib 而不是故事板。【参考方案2】:
TabBarController * tabBar = (TabBarController *)[UIApplication sharedApplication].delegate.window.rootViewController;
                   if([tabBar isKindOfClass:[UITabBarController class]])
                   [tabBar setSelectedIndex:0];
                   UINavigationController * navBar = (UINavigationController *)tabBar.selectedViewController;
                   UIViewController * currentVC = navBar.topViewController;
                   [currentVC performSegueWithIdentifier:@"notificationSegue" sender:nil];

【讨论】:

【参考方案3】:

我认为这可能对你们所有 swift'ers 都有帮助。我有一个类似的项目设置,LoginViewcontroller -> TabBarController(5 个选项卡) -> 每个选项卡的 NavigationController -> 其他 ViewControllers

在故事板中,我给了我的 TabBarController 一个故事板 ID

在 AppDelegate(didFinishLaunchingWithOptions) 中我添加了

self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "TabBarControllerID") as! UITabBarController
viewController.selectedIndex = 3
self.window?.rootViewController = viewController
self.window?.makeKeyAndVisible()

将 selectedIndex 值更改为您需要的任何选项卡

【讨论】:

以上是关于如何通过 TabBarController => NavbarController 从 Appdelegate 呈现视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何向我的 tabBarController 添加约束?

如何以编程方式触发方法“tabBarController:didSelectViewController:”?

如何将自定义彩色图像添加到 TabBarController 中的 tabBar?

将 TabBArController 添加到 UIView

在 TabBarController 项中有一个 NavigationController

如何将 tabBarController 设置为 rootViewController