と呼ばれる UIViewController サブクラスViewControllerOne
と別のViewControllerTwo
.
ある時点で、別のメソッドで必要なクラスがこれらのいずれかであることを知っています。クラスをメソッドに渡し、受け取ったメソッド内で、渡されたサブクラスで UIViewController を宣言することは可能ですか?
this = this の場合、ビュー 1 を宣言し、そうでない場合はビュー 2 を宣言します。
ありがとう。
と呼ばれる UIViewController サブクラスViewControllerOne
と別のViewControllerTwo
.
ある時点で、別のメソッドで必要なクラスがこれらのいずれかであることを知っています。クラスをメソッドに渡し、受け取ったメソッド内で、渡されたサブクラスで UIViewController を宣言することは可能ですか?
this = this の場合、ビュー 1 を宣言し、そうでない場合はビュー 2 を宣言します。
ありがとう。
あなたの方法は次のとおりです。
- (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;
}