使用 performSegue 显示 navigationController

Posted

技术标签:

【中文标题】使用 performSegue 显示 navigationController【英文标题】:Show navigationController with performSegue 【发布时间】:2017-08-17 13:02:53 【问题描述】:

我正在尝试从tableview 显示tabbarController。表格视图已经在导航控制器中,我正在使用 segue 显示标签栏,但由于某些原因,当标签栏显示时导航控制器标签消失了。 这是执行segue的代码sn-p。

if cell.menuLbl.text! == NSLocalizedString("Our Brands", comment: "Our Brands") 

    UserDefaults.standard.set("somevalue", forKey: "somekey")
    UserDefaults.standard.set("somevalue", forKey: "somekey")

    performSegue(withIdentifier: "SegueName_", sender: self)

   //let mainStoryboard:UIStoryboard = UIStoryboard(name : "Main" , bundle : nil)
   //revealViewController.pushFrontViewController( <#UIViewController!#>, animated: true)


我正在使用 Userdefaults 来存储一些数据以用于其他目的。

感谢任何帮助。

PS。 ios 新手。

【问题讨论】:

【参考方案1】:

您的Storyboard 设置不正确。将您的表格视图控制器嵌入到导航控制器中,这样您从表格视图控制器中转到的每个视图控制器也将嵌入到导航控制器中。

请参阅下图了解如何从Storyboard 实现此目标:

【讨论】:

请在问题中附上您的Storyboard 的屏幕截图。使用正确配置的Storyboard,这应该可以正常工作。另外,你确定你没有从 TabBarController 的代码中隐藏 navigationController 吗? 其他控制器 .... menu->viewController->tab bar(正常工作)...但是这种情况... menu->tab bar(没有导航栏显示)。【参考方案2】:

我记得在开发的早期,推送UITabbarController 是被禁止的。我不知道这是否仍然是一个规则,但你可以肯定的是,以模态方式呈现 TBVC。

【讨论】:

【参考方案3】:

你不应该做你想做的事。当UITabBarControllerUINavigationController 一起使用时,导航控制器应始终包含在标签栏控制器中,而不是相反。

允许的配置是:

拆分视图控制器 -> 选项卡栏控制器 -> 导航控制器 -> 内容视图控制器。

您正在尝试做的是与框架作斗争。

编辑添加

如果您真的想要这样做,请尝试在视图控制器的视图中添加UITabBar(不是UITabBarController,但您必须编写自己的代码来管理处理水龙头和更改视图控制器。

【讨论】:

您能否为这种情况推荐一些代码或其他东西 我可以用简单的viewControllerdestinationcontroller替换segue perform吗?

以上是关于使用 performSegue 显示 navigationController的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:PerformSegue WithIdentifier 不显示视图控制器,没有错误

使用 editActions 和 performSegue 编辑 UITableView 行?

使用 viewController 的 performSegue 线程错误? iOS

无法在 dispatchqueue 中手动控制 performSegue()

使用 performSegue 将数据传递给目标视图控制器

Swift performSegue 未执行 [重复]