如何在导航堆栈上检查当前的UIViewController

时间:2013-10-17 00:22:22

标签: ios objective-c uiviewcontroller uinavigationcontroller

我试图弄清楚哪个UIViewController当前位于UINavigationController堆栈的顶部,我将这些值传递给我的NSArray viewCtrls,当我记录顶部的UIViewController时,我得到了这个。

<SearchViewController: 0x1457c550>

所以这是我试图用来确定哪个UIViewController位于UINavigationStack顶部的代码

NSArray *viewCtrls = navcontroller.viewControllers;
UIViewController *vCtrl = [viewCtrls objectAtIndex:[viewCtrls count]-1];

NSLog(@"%@", vCtrl);

if ([vCtrl isKindOfClass:SearchViewController]) {
    NSLog(@"yes");
} else {
    NSLog(@"no");
}

我如何在if语句的第一行收到此错误。

Use of undeclared identifier 'SearchViewController'

我想知道我应该如何声明标识符?这是从NSObjectClass调用的,所以我需要从调用此NSObjec类的UIViewController传递一个self参数?或者有更好的方法吗?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您想要[vCtrl isKindOfClass:[SearchViewController class]]

答案 1 :(得分:1)

迈克的解决方案应该可行。显然,它无法理解SearchViewController是什么,真的。 你能检查一下前言吗

@class SearchViewController

用于编写上述代码的类的头文件中的SearchViewController类,然后将SearchViewController.h文件导入到编写上述代码的类的源文件中。

#import "SearchViewController.h"