由于 UIButton segue,如何切换 UITabBars?

Posted

技术标签:

【中文标题】由于 UIButton segue,如何切换 UITabBars?【英文标题】:How to switch UITabBars as a result of UIButton segue? 【发布时间】:2018-07-21 21:07:39 【问题描述】:

我有一个 UITabBar,目前有 4 个标签,效果很好。我需要导航到一组新的选项卡,就好像应用程序正在进入不同的模式一样。通过 navigationController 推送新的 UITabBar 不起作用——它目前只是在旧的 UITabBar 之上添加一个新的 UITabBar 并在旧的 UITabBar 下添加一个新的UINavigationBar。我会创建一个全新的 UIWindow,其 rootViewController 是我的新 UITabBarController 吗?

@objc func startSecondStory() 
    let newTabs = SecondaryTabBarController()
    navigationController?.pushViewController(newTabs, animated: true)

代码是推送的 UIButton 的操作。我不希望将新的 UITabBar 推到堆栈顶部。我更喜欢它只是将 rootView 作为 SecondaryTabBarController 的全新 UINavigationController。

【问题讨论】:

【参考方案1】:

你可以使用(这将清除前一个)

self.navigationController?.setViewControllers([newTabs],animated:true)

//

UIApplication.shared.keyWindow?.rootViewController = newTabs

【讨论】:

问题在于它在旧视图中创建了 UINavigationController 和 UITabBar。它与使用 pushViewController(_:animated:) 的问题相同。【参考方案2】:

啊,我可以使用 present(_:animated:completion:)。但是,我仍然想知道是否有更有效的方法来减少内存使用。我认为这只是在堆栈顶部弹出新的 UITabBarController 而不删除旧的。

【讨论】:

以上是关于由于 UIButton segue,如何切换 UITabBars?的主要内容,如果未能解决你的问题,请参考以下文章

如何取消连接到 UIButton 的 segue

如何从子视图内的编程 UIButton 执行 segue?

如何在 segue 中初始化 UIButton 的 titleLabel 字体?

ios - 将一个 UIButton 连接到 2 个 segues

iOS Objective-C:如何从另一个类调用 Push Segue

从 UITableViewCell 中的 UIButton 触发 Segue