iOS:如何检查给定的类是一种UIViewController类?

时间:2013-03-19 06:33:02

标签: ios objective-c class uiviewcontroller

我正在编写一个返回给定视图控制器类的视图控制器实例的方法,但我需要确保传入的类实际上是一个视图控制器类:

- (UIViewController *)viewControllerWithClass:(Class)cls nibName:(NSString *)nibName
{
    if (cls is kind of UIViewController subclass)
        return [[[cls alloc] initWithNibNamed:nibName bundle:nil] autorelease];
    return nil;
}

我无法比较类的名称,因为cls可能不是UIViewController。

编辑:

对不起我的意思是在方法内部,如何检查cls是否是一种UIViewController子类

5 个答案:

答案 0 :(得分:24)

if ([cls isSubclassOfClass:[UIViewController class]]) {


   //Your code

}  

答案 1 :(得分:1)

您可以使用以下代码。

if ([cls isKindOfClass:[UIViewController class]]) {
    //your code
}

答案 2 :(得分:0)

如果你有一个表示要测试的Objective-C类的类对象,那么使用+ (BOOL)isSubclassOfClass:(Class)aClass返回一个布尔值,该值指示接收者是给定类的实例还是继承自的类的实例那个班。 (所需的)

if([cls isKindOfClass:[UIViewController class]])
{
}

修改

如果你有一个类对象,它是要测试的类的子类或者与要测试的类相同,那么使用+ (BOOL)isSubclassOfClass:(Class)aClass返回一个布尔值,该值指示接收类是否是a的子类,或者是否为a给定的课程。

if([cls isSubclassOfClass:[UIViewController class]])
{
}

答案 3 :(得分:0)

// Check This out
if([youViewControllerObject isKindOfClass:[UIViewController class]])
{
    NSLog(@"isViewcontroller Class");
}

答案 4 :(得分:0)

这个答案有点晚了,但是既然你想检查一个类对象的类(不是一个类的实例),以下是相应的测试:

if(cls == [UIViewController class]) {
   // Whatever ...
}