声明UIViewController而不知道子类?
问题描述:
可以说我有一个名为ViewControllerOne
的UIViewController子类和另一个ViewControllerTwo
。声明UIViewController而不知道子类?
我知道在另一个方法中,我需要的类是其中之一。是否有可能在一个方法中传递类,然后在它接收到的方法内部声明一个UIViewController与哪个子类通过?
我想知道它是否可能,而不只是做这样的事情,如果this = this,声明视图一,否则声明视图二。
谢谢。
答
你的方法可能是:
- (void)myMethod:(Class)class {
UIViewController *controller = [[class alloc] init];
}
或者其他类似的效果。
或者你可以创造一个你知道类是什么控制器,并将其传递到方法:
UIViewController *controller = [[MYViewController alloc] init];
[self myMethod:controller];
然后,如果需要的话里面的方法:
希望帮助! :)
答
乔希,除了乔治的回答,如果我理解你的权利,你应该知道关于下面的方法,每一个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;
}