【发布时间】:2016-01-28 11:41:09
【问题描述】:
UINavigationController 有 3 个控制器,听起来都与我非常相似:topViewController、visibleViewController 和 presentedViewController。
您在哪些场景中使用这些控制器?
【问题讨论】:
标签: ios objective-c swift uiviewcontroller uinavigationcontroller
UINavigationController 有 3 个控制器,听起来都与我非常相似:topViewController、visibleViewController 和 presentedViewController。
您在哪些场景中使用这些控制器?
【问题讨论】:
标签: ios objective-c swift uiviewcontroller uinavigationcontroller
pushViewController(_:animated:) 方法推送到 UINavigationController。将以前的控制器推开并替换它。 pushViewController(_:animated:) 你使用 UIViewController's present(_:animated:completion:) 方法。 注意:呈现的视图控制器也称为模态视图控制器,可以在没有 UINavigationController 的情况下使用。
例子:
一般来说,visibleViewController 似乎更有用,因为它会告诉您当前显示的是什么视图,无论它是被推送还是呈现。
【讨论】:
presentedViewController 是屏幕上显示的当前模式。
topViewController 是导航堆栈顶部的视图控制器(参见 viewControllers() 方法),visibleViewController 是屏幕上当前显示的视图控制器(可以是控制器、模式、UINavigationController、UITabbarController等)。
【讨论】:
TopViewController 是导航堆栈中最顶层的 VC。或最后推送的视图控制器。
PresentedViewController 是从 navigationController 模态呈现的 viewController。它不是 NaivagationController 水平堆栈的一部分,而是呈现在它上面的 viewController。
在这两个viewController中,对用户可见的是navigationController的visibleViewController。
【讨论】: