2013-02-13 63 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; 
}