View Controller 不会关闭并立即呈现新的 View Controller

View Controller won't dismiss and present new view controller immediately

我试图在 QRCode reader 被关闭后显示一个视图控制器,但是在执行此操作时,QRCode reader 视图控制器再次显示。下面的代码片段显示了该方法以及我如何关闭视图以及我如何尝试呈现下一个视图控制器。关于为什么当我尝试呈现不同的控制器时 QR reader 视图控制器不断呈现自己的任何想法。

func readerDidCancel(_ reader: QRCodeReaderViewController) {
    dismiss(animated: true, completion: nil)
    present(ClockInOrOutViewController(), animated: true, completion: nil)
}

您必须在 dismiss 完成 处理程序中调用 present

func readerDidCancel(_ reader: QRCodeReaderViewController) {

    weak var presentingViewController = self.presentingViewController

    self.dismiss(animated: true, completion: {
        presentingViewController?.present(ClockInOrOutViewController(), animated: true, completion: nil)
    })
}

如果这不起作用,则意味着您的呈现视图控制器也已以某种方式被删除。 (dismissed/popped?)

您不能在其他视图控制器关闭时显示视图控制器,也不能在关闭视图控制器时显示。 你可以这样做:

func readerDidCancel(_ reader: QRCodeReaderViewController) {
   let presenting = self.presentingViewController
   dismiss(animated: true, completion: {
      presenting?.present(ClockInOrOutViewController(), animated: true, completion: nil)
   }) 
}