2011-03-07 7 views
1

私は離れて、Webサービスと話すカスタムクラスを持っています。現時点では、私のサービスクラスを使用し、データを正常に戻すUIViewControllerサブクラスがあります。異なるUIViewControllerサブクラスを渡す同じメソッドを使用できますか?

私はUIViewControllerサブクラスのリファレンスを、メソッドのパラメータとしてサービスクエリメソッド(queryServiceWithParent)に送信します。

次に、クラスで後で使用できるように、UIViewControllerサブクラスをプロパティに格納します。

NeighbourhoodData.h:

NeighbourhoodDetailTableViewController *viewController; 

NeighbourhoodData.m:

- (void)queryServiceWithParent:(UIViewController *)controller { 

    viewController = (NeighbourhoodDetailTableViewController *)controller; 

} 

私の問題は、私は今、異なるのUIViewControllerのサブクラスで別のビューから、このクラスを使用したいということです。

私のパラメータはUIViewControllerだけなので、サブクラスを渡すことはできますが、クラスプロパティを正しいUIViewControllerサブクラスタイプに設定することができます。

これを行う方法はありますか?私はiPhoneの開発シーン全体には非常に新しいので、これをやっていると思う唯一の方法は新しいクラスを作ることですが、もっと良い方法が必要だと思っていたでしょう...

答えて

1

idはどのようなクラスであるかを尋ねることができます。このような何かがうまくいくかもしれない:

- (void)doStuffWithMyViewController:(UIViewController *)controller 
{ 
    if ([controller isKindOfClass:[FirstViewControllerSubclass class]]) 
    { 
     //The controller is a FirstViewControllerSubclass or a subclass of FirstViewControllerSubclass 
    } 

    if ([controller isKindOfClass:[SecondViewControllerSubclass class]]) 
    { 
     //The controller is a SecondViewControllerSubclass or a subclass of SecondViewControllerSubclass 
    } 
} 

そこから、あなたは彼らがあるか、どんなあなたが望むどのサブクラスに基づいて異なることを行うことができます。

2つのビューコントローラの共通のスーパークラスを作成することも考慮する必要があります。

+0

ありがとうございます。私の問題は、どのUIViewControllerサブクラスが送信されている、それは、 "viewController"プロパティを後でクラスで使用する必要があるので、メソッドが送信されているサブクラスの型に設定する場合です。スーパークラスについてのあなたの提案は、それがそのようなトリックを行うかもしれないと聞こえますが... –

+0

スーパークラスメソッドは、あなたの助けを大変感謝してくれました! –

0

他のクラスがアクセスするクラスメソッド、または現在のクラスを他のクラスの代理人にするために委譲を設定することを学ぶ必要があります。

関連する問題