从 AppDelegate 加载标签栏控制器

Posted

技术标签:

【中文标题】从 AppDelegate 加载标签栏控制器【英文标题】:Load Tab Bar Controller from AppDelegate 【发布时间】:2018-02-10 19:56:21 【问题描述】:

我一直在尝试自己解决这个问题,但无法解决。

我想从我的 AppDelegate 加载一个标签栏控制器(在 Google 成功登录到应用程序之后)。

我在这里阅读了如何从 AppDelegate 加载 ViewController

Perform Segue from App Delegate swift

示例中的代码:

// Access the storyboard and fetch an instance of the view controller
let storyboard = UIStoryboard(name: "Main", bundle: nil);
let viewController: MainViewController = storyboard.instantiateViewController(withIdentifier: "ViewController") as! MainViewController;

// Then push that view controller onto the navigation stack
let rootViewController = self.window!.rootViewController as! UINavigationController;
rootViewController.pushViewController(viewController, animated: true);

根据我的理解,在此示例中,我的 TabBar 需要名称和标识符。

有人可以向我解释一下吗?我在 Tab Bar Controller 上找不到“标识符”,只有“标题”。

另外,我的应用中没有导航控制器视图。

【问题讨论】:

【参考方案1】:

在此处设置情节提要 ID

并在navigationController中嵌入IB中的firstViewController

 let rootViewController = self.window!.rootViewController as! UINavigationController;
 rootViewController.pushViewController(viewController, animated: true);

【讨论】:

感谢您的快速回复。所以这是 Storyboard ID 是标识符。名字呢?关于更改 root - 这与示例中的有何不同? 我刚刚看到你编辑了帖子。我现在已经设置了 StoryboardID。它是“MainTabBar”。在 IB 中嵌入 firstViewController 是什么?在导航控制器?我没有navigationController,什么是IB? IB 是 Interface Builder ,选择视图控制器,箭头指向它的中间,从左到右,在 Editor 菜单中选择 Embed in navigation controller 当你说“firstViewController”时,你的意思是登录发生的视图控制器? 在 IB 中选择导航控制器,并在右侧作为 Storyboard ID ,取消选中显示导航栏,还要注意所有即将到来的礼物都将被推送和关闭将弹出【参考方案2】:

ios 13 更新

来自版本。 iOS 13, RootViewController 将在位于 scene 的函数中启动 SceneDelegate.swift 而不是 AppDelegate.swift 文件。看起来像这样。

示例:

         // Simple init
        let mainSB: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let loggedInTabController = mainSB.instantiateViewController(identifier: "loggedInTabController")
        self.window!.rootViewController = loggedInTabController

【讨论】:

以上是关于从 AppDelegate 加载标签栏控制器的主要内容,如果未能解决你的问题,请参考以下文章

在需要时从视图控制器显示/隐藏标签栏

使用标签栏和导航实例化深度视图控制器

如何从 AppDelegate 打开特定的选项卡视图

我需要在 appdelegate swift 中添加一个自定义标签栏控制器

Monotouch:使用标签栏控制器和导航控制器。 AppDelegate 中有哪一个?

在推送通知 Swift 2 AppDelegate 上加载特定的 viewController