在不知道子类的情况下声明UIViewController?

时间:2013-02-13 11:47:20

标签: iphone objective-c ipad uiviewcontroller declaration

假设我有一个名为ViewControllerOne的UIViewController子类和另一个ViewControllerTwo

我知道我在另一种方法中需要的类是其中之一。是否有可能在一个方法中传递该类,然后在它接收到的那个方法中,声明一个UIViewController与传递的子类是什么?

我想知道它是否可能,而不仅仅是做一些事情,如果这个=这个,声明一个视图,否则声明视图二。

感谢。

2 个答案:

答案 0 :(得分:4)

您的方法可能是:

- (void)myMethod:(Class)class {
    UIViewController *controller = [[class alloc] init];
}

或者那种效果。

或者您可以创建控制器,让您知道该类是什么,并将其传递给方法:

UIViewController *controller = [[MYViewController alloc] init];
[self myMethod:controller];

然后如果需要在方法内:

- (void)myMethod:(UIViewController *)controller {
    if ([controller isKindOfClass:[MYViewController class]]) {
        // Do something
    } else {
        // Do something else
    }
}

希望有所帮助! :)

答案 1 :(得分:2)

乔希,除了乔治的回答,如果我理解你的话,你应该知道每个NSObject都有以下方法:

- (BOOL)isKindOfClass:(Class)aClass

所以,你可以这样检查

if ([myObject isKindOfClass:[ViewControllerOne class]])
{
     //declare here ViewControllerOne
     ViewControllerOne *myViewControllerOne = myObject;
}
else if ([myObject isKindOfClass:[ViewControllerTwo class]])
{
     //declare here ViewControllerOne
     ViewControllerTwo *myViewControllerOne = myObject;
}