0

と呼ばれる UIViewController サブクラスViewControllerOneと別のViewControllerTwo.

ある時点で、別のメソッドで必要なクラスがこれらのいずれかであることを知っています。クラスをメソッドに渡し、受け取ったメソッド内で、渡されたサブクラスで UIViewController を宣言することは可能ですか?

this = this の場合、ビュー 1 を宣言し、そうでない場合はビュー 2 を宣言します。

ありがとう。

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 に答える