【问题标题】:Swift - popViewController after DismissSwift - 解雇后的popViewController
【发布时间】: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 个被隐藏。

标签: ios swift


【解决方案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 :/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    相关资源
    最近更新 更多