UINavigationController.presentViewController 和 self.presentViewController 有什么区别?

What is the difference between UINavigationController.presentViewController and self.presentViewController?

假设我有一个带根视图控制器 A 的导航控制器,我需要呈现一个视图控制器 B,我可以使用以下两种方式之一:

  1. self.navigationController!.presentViewController(b, animated: true)

  1. self.presentViewController(b, animated: true)

但是,我只是想知道,这两种方式有什么区别?

它们是类似的 - 都启动模态表示。

在最近的 iOS 版本中,模态呈现总是到达最顶层的容器视图控制器。因此,当您的视图控制器(又名 self)是导航控制器(又名 self.navigationController)内的容器时,当您尝试在视图控制器上呈现时,它会将呈现职责传递给导航控制器。一旦演示完成,您可以通过记录 bpresentingController 来验证这一点。在这两种情况下,presentingController 将成为导航控制器。