在UINavigation Controller中获取UITabBarController中View Controller的currentViewController

Posted

技术标签:

【中文标题】在UINavigation Controller中获取UITabBarController中View Controller的currentViewController【英文标题】:Get currentViewController of View Controller in UITabBarController in UINavigation Controller 【发布时间】:2015-02-20 04:50:21 【问题描述】:

我想知道如果我有一个UITabBarController 并且在那个 TabBarController 中有 4 个不同的UINavigationControllers 并且 NavigationController 显然有视图控制器堆栈,我如何找到当前的视图控制器。在我的应用程序委托中,我试图找出这些信息,以便阻止出现应用内推送通知。所以我想做类似的事情:

if (self.currentViewController != self.chatViewController) 
   //Show the notification everywhere else except here(here being self.chatViewController)

【问题讨论】:

【参考方案1】:

尝试这样做:

    UITabBarController *tabBarControler = (UITabBarController*)self.window.rootViewController;
    UINavigationController *navController = [[tabBarControler viewControllers] objectAtIndex:<selected_index>];
    NSArray *navViewControllers = [navController viewControllers];

你可以像这样检查当前的 viewController。

if (navController.topViewController != self.chatViewController) 
 //Show the notification every else except here(here being self.chatViewController)

@kylecman 编辑

我最终做的是使用 tabbarcontroller 和导航控制器实例,而不是使用数组(还没有发现需要)

然后我为 viewController 的类准备了一个 IF 语句

if (![navController.topViewController isKindOfClass:[ChatView class]] && ![navController.topViewController isKindOfClass:[MessagesViewController class]]) 

【讨论】:

我很喜欢这个答案。您是否介意在进行编辑时接受我的编辑,因为我让它与您的一段代码一起使用? 很高兴知道它对您有所帮助 :)

以上是关于在UINavigation Controller中获取UITabBarController中View Controller的currentViewController的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Segue View Controller 从右到左没有 UINavigation

IOS Swift CNContactViewController 导航栏不显示 UINavigation 控制器

UINavigationController

UINavigationController

UINavigationController

iOS UINavigationController