0

假设我有一个 UIViewController 子类ViewControllerOne和另一个ViewControllerTwo.

我知道在另一种方法中我需要的类是其中之一。是否可以在方法中传递类,然后在接收到的方法中,声明一个 UIViewController 与传递的任何子类?

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

谢谢。

4

2 回答 2

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

希望有帮助!:)

于 2013-02-13T11:50:27.960 回答
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;
}
于 2013-02-13T11:54:52.283 回答