【问题标题】:Present View Controller embedded in Navigation Controller apart of Tab bar controller modally以模态方式将嵌入在导航控制器中的视图控制器与标签栏控制器分开
【发布时间】:2017-11-24 07:05:12
【问题描述】:

我在导航控制器中嵌入了一个视图控制器。这个导航控制器是我的标签栏控制器中的第三个项目。我想以模态方式呈现视图控制器。

这是我尝试过的,但它没有运行

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {

    // CameraView is the Storyboard ID of the VC I want to present

    if viewController is EditPreviewVideosViewController {
        if let newVC = tabBarController.storyboard?.instantiateViewController(withIdentifier: "CameraView") {

            // None of this prints
            print()
            print("new vc is allowed")
            print()
            tabBarController.navigationController?.present(newVC, animated: true, completion: {
                print("complete")
            })
            return false
        }
    }
    return true
}

【问题讨论】:

  • 您的相机 VC 和您的 tabBarController 是否在同一个故事板中?
  • 标签栏控制器不在不同的故事板中
  • 我问的是同一个故事板文件中的两个视图控制器?或者你有多个故事板
  • 抱歉打错了,不,它们不在同一个故事板文件中。我有多个故事板
  • 检查我的答案

标签: ios swift xcode


【解决方案1】:

从 tabbarController childs 获取正确的导航控制器

if let nav = tabBarController.viewControllers[tabBarController.selectedIndex] as UINavigationController {

    nav.present(newVC, animated: true, completion: {
        print("complete")
    })
}

【讨论】:

  • 我在哪里添加这个代码,你能用应用程序中的完整功能更新答案吗?
  • 这段代码应该替换tabBarController.navigationController?.present({ ... })这一行
  • 好的,我试过了,我发现if viewController is EditPreviewVideosViewController 没有被运行。有什么建议吗?
【解决方案2】:

您在错误的情节提要中找到视图控制器

这一行

let newVC = tabBarController.storyboard?.instantiateViewController(withIdentifier: ....

应该是

let newVC = UIStoryboard.init(name: "NameOfYourStoryboardContainsVideo", bundle: nil).instantiateViewController(withIdentifier: "CameraView")

现在你的 if 将正确执行

【讨论】:

  • 那么我是要包含情节提要 ID 的名称,还是情节提要的实际名称
  • 第一个参数将采用故事板的名称,如 Main,第二个参数将接受故事板 ID,即“CameraView”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 1970-01-01
相关资源
最近更新 更多