7

特定のビュー コントローラー クラスのビュー コントローラー インスタンスを返すメソッドを作成していますが、渡されたクラスが実際にビュー コントローラー クラスであることを確認する必要があります。

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

clsUIViewControllerではない可能性があるため、クラスの名前を比較できません。

編集:

申し訳ありませんが、メソッド内のことを意味していましたcls.UIViewControllerサブクラスの一種であるかどうかを確認するにはどうすればよいですか

4

5 に答える 5

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


   //Your code

}  
于 2013-03-19T06:38:55.143 に答える
1

以下のコードを使用できます。

if ([cls isKindOfClass:[UIViewController class]]) {
    //your code
}
于 2013-03-19T06:34:30.797 に答える
0

テストするObjective-Cクラスを表すクラスオブジェクトがある場合は、を使用+ (BOOL)isSubclassOfClass:(Class)aClassして、レシーバーが特定のクラスのインスタンスであるか、そのクラスから継承するクラスのインスタンスであるかを示すブール値を返します。(必要)

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

編集

テストするクラスのサブクラスまたは同一のクラスオブジェクトがある場合は、これを使用+ (BOOL)isSubclassOfClass:(Class)aClassして、受信クラスが特定のクラスのサブクラスであるか、特定のクラスと同一であるかを示すブール値を返します。

if([cls isSubclassOfClass:[UIViewController class]])
{
}
于 2013-03-19T06:35:44.597 に答える
0
// Check This out
if([youViewControllerObject isKindOfClass:[UIViewController class]])
{
    NSLog(@"isViewcontroller Class");
}
于 2013-03-21T04:44:52.583 に答える