Swift - 解雇后的popViewController
Posted
技术标签:
【中文标题】Swift - 解雇后的popViewController【英文标题】:Swift - popViewController after Dismiss 【发布时间】:2020-04-13 15:39:03 【问题描述】:我正在尝试关闭显示为 modal("Present Modally") 的 viewcontroller,然后关闭 navigationController 中的 popViewController。这是我的故事板,我想从 QRScanner VC 转到 Monitoring VC。
这是我在添加设备 VC 中展示 QRScanner VC 的方式:
let storyboard = UIStoryboard(name: StoryboardIDs.MainStoryboard, bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: VCIDs.QRDeviceScannerVC) as! QRDeviceScannerVC
controller.deviceName = deviceNameTxt.text
present(controller, animated: false, completion: nil)
这是我尝试返回 MonitoringVC 的方式:
self?.navigationController?.popViewController(animated:true)?.navigationController?.popViewController(animated: false)
也试过了:
self?.dismiss(animated: true, completion:
self?.presentingVC?.navigationController?.popViewController(animated: false)
)
它总是转到添加设备 VC 而不是监控 VC
【问题讨论】:
您的情节提要似乎有错误?从监控到添加设备似乎有两个推送序列。 有2个按钮可以打开添加设备。当用户已经注册了至少 1 个设备时,其中 1 个被隐藏。 【参考方案1】:使用 unwind segue,其中 unwind 目标方法位于 Monitoring VC 中。所有正确的事情都会像魔术一样发生。
【讨论】:
【参考方案2】:你可以试试
self?.dismiss(animated: false, completion:nil)
self?.presentingVC?.navigationController?.popViewController(animated: true)
只需检查您是否引用了导航控制器
【讨论】:
由于某种原因 navigationController 为 nil :/ 和presentingVC是AddDevice还是模态?另外,你是推送 AddDevice 还是展示了? 看起来let presentingVC = self.presentingViewController
正在返回UITabBarController
。我用present
来展示 QRScannerVC
这个自我是什么?您可以直接尝试使用 self 而不是 self.presentingViewController
self
返回 QRDeviceScannerVC
并且 'self.navigationController` 也返回 nil :/以上是关于Swift - 解雇后的popViewController的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift:如何创建像 UIAlertView 这样看似在解雇后自行消失的对象