visibleViewController和topViewController

visibleViewController和topViewController 获取当前显示的页面

UINavigationController 中有visibleViewController和topViewController
今天通过一个demo了解了他们的异同
visibleViewController 就是当前显示的控制器
topViewController 是某个导航栈的栈顶视图
visibleViewController和哪个导航栈没有关系,只是当前显示的控制器,也就是说任意一个导航的visibleViewController所返回的值应该是一样的,
但是topViewController 就是某个导航栈的栈顶视图,和导航相关
换句话说如果在仅有一个导航栈上,visibleViewController和topViewController应该是没有区别得。

获取当前显示的控制器 UIWindow (Visible)

- (UIViewController *)visibleViewController {
    UIViewController *rootViewController =[[[[UIApplication sharedApplication] delegate] window] rootViewController];
    return [UIWindow getVisibleViewControllerFrom:rootViewController];
}

值得注意的是

1、

[[[UIApplication sharedApplication] keyWindow] rootViewController]

有时为nil 比如当页面有菊花在转的时候,这个rootViewController就为nil;所以使用

[[[[UIApplication sharedApplication] delegate] window] rootViewController] 

或者

[[[[UIApplication sharedApplication] windows] objectAtIndex:0] rootViewController]

presentedViewController 和 presentingViewController
当A弹出B
A.presentedViewController=B
B.presentingViewController=A

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容