【问题标题】:How to call tab bar view controller from simple view controller which is embedded in navigation controller?如何从嵌入在导航控制器中的简单视图控制器调用标签栏视图控制器?
【发布时间】:2018-01-03 05:25:24
【问题描述】:

如何从简单的 UIViewController 调用 TabbarViewControllers 连接的 viewController,其中简单的 UIViewController 嵌入在 UINavigationController 中。我想要 UINavigationController 在将一个视图控制器移动到另一个视图控制器时提供的相同的推送和弹出效果。在谷歌挖掘之后,我发现在导航堆栈中推送标签栏视图控制器并不是构建应用程序的好方法。我尝试创建自定义事务动画,但它与 UINavigation 事务效果不同。请给出一些建议或解决方案。谢谢!!

【问题讨论】:

  • 意思是你需要从普通视图控制器打开UITabbarController,对吧?
  • 是的@Nirmalsinh。

标签: ios objective-c swift xcode


【解决方案1】:

你可以直接将UITabbarController设置为window的rootViewController。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
_tabObj = (TabbarViewController*) [storyboard instantiateViewControllerWithIdentifier:@"TabbarViewController"];
self.window.rootViewController = _tabObj;

检查上面的代码。

【讨论】:

  • 目前模态不给动画像 UINavigationController 推送动画
【解决方案2】:

作为Nirmalsinh 的答案,您可以将符合UITabBarControllerDelegate 的视图控制器设置为您的self.window.rootViewController,然后应该在其中包含UITabBarController

var tabBarController: UITabBarController

然后你可以每个标签的导航和视图控制器

let firstViewController = FirstViewController()
let firstNavigationController = UINavigationController(rootViewController: firstViewController)
// other setter

tabBarController.viewControllers = [
    firstNavigationController
]

那么在FirstViewController里面,就可以调用了

let secondViewController = SecondViewController()
navigationController?.pushViewController(SecondViewController, animated: true)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    相关资源
    最近更新 更多