UINavigationController
有 3 个 Controller ,听起来都与我非常相似:topViewController
、visibleViewController
和 presentedViewController
。
您在哪些场景中使用这些 Controller ?
最佳答案
- topViewController - 最后一个 View Controller 使用 UINavigationController 的
pushViewController(_:animated:)
方法推送到 UINavigationController。将之前的 Controller 推开并替换它。 - presentedViewController - 显示在另一个 View Controller 之上的 View Controller (基本上它覆盖了另一个 View Controller 而不是将其推开)。代替 UINavigationController 的
pushViewController(_:animated:)
你使用 UIViewController 的present(_:animated:completion:)
方法。 注意:呈现的 View Controller 也称为模态视图 Controller ,可以在没有 UINavigationController 的情况下使用。 - visibleViewController 可以与 topViewController 或 presentedViewController 相同。如果你最后推到 UINavigationController 上,它将与 topViewController 相同。如果您最后在 UIViewController 上呈现,它将与 presentedViewController 相同。
示例:
- 将 UIViewController viewA 推送到 UINavigationController。
- 让 viewA 在其自身上呈现 UIViewController viewB。
- viewA 是 topViewController。
- viewB 呈现在 ViewController 中。
- viewB 也是 visibleViewController。
- 关闭模态 viewB。
- viewA 现在是 topViewController 和 visibleViewController。 (没有 presentedViewController。)
- 弹出 viewA。
- viewA 不再是 visibleViewController 或 topViewController。
总的来说,visibleViewController 似乎更有用,因为它会告诉您当前正在显示的 View ,无论它是被推送还是呈现。
关于ios - 在 UINavigationController 中,topViewController、visibleViewController、presentedViewController 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33395463/