【问题标题】:How to segue to view controller from TabbarController?如何从 TabbarController 中继续查看控制器?
【发布时间】:2018-03-12 10:27:03
【问题描述】:

我有一个TabbarController,它是我的应用程序的入口点。所以我想将此TabbarController 转为ViewControllerA。我执行performSegue(with: "identifier")。我可以到达ViewControllerA,但是当我到达ViewControllerA 时没有NavigationBar

我尝试将ViewControllerA 嵌入到NavigationController 1st 中,所以故事板看起来像这样

TabbarController-> NavigationController -> ViewControllerA

通过这个,我可以到达 ViewControllerA。但是我的 prepareForSegue 方法有问题。因为我需要在 segue 中包含一个值,现在该值似乎不包含在内。

我在 prepareForSegue 中的代码如下所示:

if let VcA = segue.destination.navigationController?.topViewController as? ViewControllerA {
  VcA.postId = sender as! Int
}else{
   print("cant work")
}

我还尝试将 tabbarController 嵌入到 NavigationController,但在 Xcode-> Editor -> Embed 中,该选项被禁用。

所以我的问题是

如何从 TabbarController 切换到 ViewController 并且在目的地 NavigationBar 是可见的并且可以返回到上一个屏幕?

【问题讨论】:

  • 当你嵌入 ViewControllerA.And 在 NavigationController 中,segue 之后你看到了什么。
  • “我执行performSegue(with: "identifier")”在哪个文件中?它应该在ViewControllerA...
  • 在 TabbarController 兄弟 @AhmadF
  • @Nitish 我可以在 navigationController 中嵌入 ViewControllerA,我已经编辑了我的问题,我也可以转到 ViewControllerA,但我无法在 ViewControllerA 中获得 segue 的值

标签: ios swift uitabbarcontroller navigationcontroller


【解决方案1】:

假设您的故事板看起来类似于:

那是因为您在TabbarController 中调用performSegue(with: "identifier"),它直接连接到segue。你应该做什么来在连接到导航控制器的第一个视图控制器中实现它 (ViewControllerA)。所以,它会是 - 例如 - 像这样:

class ViewControllerA: UIViewController {
    // ...

    override func viewDidLoad() {
        super.viewDidLoad()

        performSegue(with: "identifier")

    }

    // ...
}

因此,您的 segue 应该从 ViewControllerA 到所需的视图控制器。

【讨论】:

  • 第一个视图控制器是 Tabbarcontroller 的第一个标签栏项目吗?
  • ViewControllerA 是我想在 segue 中到达的目的地
  • @ken ViewControllerA 是第一个显示的视图控制器,对吗?我添加了我的意思的屏幕截图。
  • @ken 所以你必须将ViewControllerA的segue连接到你想要导航到的那个......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
相关资源
最近更新 更多