在 NavigationController 上附加了多个 View Controller 的应用程序中,如何确定当前显示的 View 是什么?
How to determine, in an app with several ViewControllers attached to NavigationControllers, what the currently displayed View is?
我有一个 iOS 8 应用程序,使用 Objective-C 构建,带有 TabBarController
,有 3 个选项卡。每个 Tab 链接到一个 NavigationController
(所以有 3 个 NavigationController
),每个 NavigationController
都有一个堆栈,里面有几个 ViewController
。
因此,在任何给定时间,应用程序的用户都可以在 NavigationController
1 中的 ViewController
2(这意味着选择了选项卡 1)。然后跳到选项卡 3 (NavigationController
3) 并看到 ViewController
1,比方说。
问题是,无论应用用户看到的是哪个 ViewController
(因此,无论哪个 NavigationController
/ TabBar
选项卡有效),我如何确定(即获取 pointer/reference 到)正在显示哪个 ViewController
?
是否需要获取TabBarController
,获取其NavigationControllers
的数组,然后获取其ViewControllers
的数组,循环遍历每个元素,看哪个是顶部 ViewController
?
或者是否有一种快捷方式来确定正在显示哪个 ViewController
- 从而获得其父级 NavigationController
以及 Tab/TabBar
?那么,比如,在 iOS 中是否有一些 "global" 句柄指向活动视图并在任何给定时间显示?
非常感谢!
你很接近。从选项卡控制器中,从所选选项卡中获取导航控制器。从 UINavigationController
中,只需使用 topViewController
属性 即可获取当前显示的视图控制器。
UITabBarController *tabController = ... // a reference to the tab controller
UINavigationController *navController = (UINavigationController *)tabController.selectedViewContrpller;
UIViewController *viewController = navController.topViewController;
我有一个 iOS 8 应用程序,使用 Objective-C 构建,带有 TabBarController
,有 3 个选项卡。每个 Tab 链接到一个 NavigationController
(所以有 3 个 NavigationController
),每个 NavigationController
都有一个堆栈,里面有几个 ViewController
。
因此,在任何给定时间,应用程序的用户都可以在 NavigationController
1 中的 ViewController
2(这意味着选择了选项卡 1)。然后跳到选项卡 3 (NavigationController
3) 并看到 ViewController
1,比方说。
问题是,无论应用用户看到的是哪个 ViewController
(因此,无论哪个 NavigationController
/ TabBar
选项卡有效),我如何确定(即获取 pointer/reference 到)正在显示哪个 ViewController
?
是否需要获取TabBarController
,获取其NavigationControllers
的数组,然后获取其ViewControllers
的数组,循环遍历每个元素,看哪个是顶部 ViewController
?
或者是否有一种快捷方式来确定正在显示哪个 ViewController
- 从而获得其父级 NavigationController
以及 Tab/TabBar
?那么,比如,在 iOS 中是否有一些 "global" 句柄指向活动视图并在任何给定时间显示?
非常感谢!
你很接近。从选项卡控制器中,从所选选项卡中获取导航控制器。从 UINavigationController
中,只需使用 topViewController
属性 即可获取当前显示的视图控制器。
UITabBarController *tabController = ... // a reference to the tab controller
UINavigationController *navController = (UINavigationController *)tabController.selectedViewContrpller;
UIViewController *viewController = navController.topViewController;