2013-02-13 68 views
0

可以说我有一个名为ViewControllerOne的UIViewController子类和另一个ViewControllerTwo声明UIViewController而不知道子类?

我知道在另一个方法中,我需要的类是其中之一。是否有可能在一个方法中传递类,然后在它接收到的方法内部声明一个UIViewController与哪个子类通过?

我想知道它是否可能,而不只是做这样的事情,如果this = this,声明视图一,否则声明视图二。

谢谢。

回答

4

你的方法可能是:

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

或者其他类似的效果。

或者你可以创造一个你知道类是什么控制器,并将其传递到方法:

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

然后,如果需要的话里面的方法:

​​

希望帮助! :)

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; 
}