假设我有一个名为ViewControllerOne
的UIViewController子类和另一个ViewControllerTwo
。
我知道我在另一种方法中需要的类是其中之一。是否有可能在一个方法中传递该类,然后在它接收到的那个方法中,声明一个UIViewController与传递的子类是什么?
我想知道它是否可能,而不仅仅是做一些事情,如果这个=这个,声明一个视图,否则声明视图二。
感谢。
答案 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;
}