ios - 导航时关闭视图控制器
问题描述
我正在快速创建一个 IOS 应用程序,但在我的案例中发现了一个很大的问题。
如果我要在 Android 中执行此操作,我将使用片段并将当前片段替换为新片段,但在 swift 中似乎没有什么与片段相等,所以。
我从视图控制器 A 开始,然后导航到视图控制器 B(用户应该在此视图中选择他们的名字),然后从 BI 导航到 C。但是当我导航到 CI 时,需要关闭视图控制器 B以避免堆叠。但我找不到一个好方法来删除当前的视图控制器并导航到一个新的。
func navigateToService(selectedCar: String!){
if let storyboard = storyboard{
let vc = storyboard.instantiateViewController(withIdentifier: "BookServiceViewController") as! BookServiceViewController
self.dismiss(animated: true) //<---
vc.selectedCar = selectedCar
self.present(vc, animated: true)
}
}
到目前为止,我已经尝试过这个以及更多。但在我的情况下似乎没有任何效果。我在线程中添加的代码只是立即关闭视图,而不是打开新视图。
那么如何从 A -> B -> Dimiss B -> C 导航?
临时编辑,将被删除
func navigateToService(selectedCar: String!){
self.dismiss(animated: true) {
if let storyboard = self.storyboard{
let vc = storyboard.instantiateViewController(withIdentifier: "BookServiceViewController") as! BookServiceViewController
vc.selectedCar = selectedCar
self.present(vc, animated: true)
}
}
}
解决方案
试试这个代码: -
首先,您当前呈现的视图(B)使用此代码制作推送视图,然后尝试呈现您的“BookServiceViewController”视图(C)
let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "Your_Current_Presented_View") as! Your_Current_Presented_View
let nav = UINavigationController(rootViewController: nextVC)
nav.navigationBar.isHidden = true
DispatchQueue.main.async {
self.present(nav, animated: true, completion: nil)
}
现在之后,调用你的函数
func navigateToService(selectedCar: String!){
if let storyboard = storyboard{
let vc = storyboard.instantiateViewController(withIdentifier: "BookServiceViewController") as! BookServiceViewController
self.dismiss(animated: true) //<---
vc.selectedCar = selectedCar
self.present(vc, animated: true)
}}
推荐阅读
- javascript - 使用javascript在文本悬停时显示摘要块中的图像
- jquery-selectors - jQuery.on() 用于没有特定选择器的孩子
- multithreading - 将一个线程的返回值传递给另一个线程
- mysql - 将图像转换为 nvarchar(max)
- android - 是否可以获得当前正在播放的歌曲信息?
- cmake - 有没有办法用 add_custom_target 将 add_custom_command 链接到另一个目录中定义的目标?
- ajax - 发送文件到 MVC 控制器
- c# - 如何隐藏主页/默认选项卡(TabControl)上的关闭按钮
- python - Python html格式全部选择表格行
- reactjs - 由于“导入类型”导致 testcafe 编译失败 - 需要更新到 Typescript 3.8 版