假设我有一个 UIViewController 子类ViewControllerOne
和另一个ViewControllerTwo
.
我知道在另一种方法中我需要的类是其中之一。是否可以在方法中传递类,然后在接收到的方法中,声明一个 UIViewController 与传递的任何子类?
我想知道它是否可能而不只是做类似的事情,如果 this = this,则声明视图一,否则声明视图二。
谢谢。
假设我有一个 UIViewController 子类ViewControllerOne
和另一个ViewControllerTwo
.
我知道在另一种方法中我需要的类是其中之一。是否可以在方法中传递类,然后在接收到的方法中,声明一个 UIViewController 与传递的任何子类?
我想知道它是否可能而不只是做类似的事情,如果 this = this,则声明视图一,否则声明视图二。
谢谢。
你的方法可能是:
- (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
}
}
希望有帮助!:)
乔希,除了乔治的回答,如果我理解你的话,你应该知道每个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;
}