0


UITableViewControllerから派生し、特定のタイプのテーブルに関連するすべてを処理するクラスがあります。それを呼びましょうClass T

5月のメインアプリケーションクラスではClass A、たとえばマップとして画面の他の領域にデータを入力するメソッドがあります。

内にテーブルを入力しているときに、マップ上にポイントをプロットするメソッドClass Tを呼び出したいと思います。Class Ax,y

これは可能ですか?これを行う正しい方法は何ですか?

このアプローチについて考えたとき、これはインスタンスの所有者クラスであるため、[super ...]内部Class Tを呼び出すとメソッドが呼び出されることを期待していましたが、もちろん、親クラス(私の場合は)を呼び出します。Class AUITableViewController

ありがとう、
ペドロ

4

2 に答える 2

1

ClassAProtocol を定義してから、クラス T にプロパティ「classADelegate」を追加してみませんか? ClassAProtocol は次のようなメソッドを定義します。


-(void)plotXYOnMapFromData:(id)someObjectContainingDataToPlot;

したがって、クラス T インターフェースでは、以下を追加します。


@property (assign) id classADelegate;

次に、インスタンス化するとき、instanceA (クラス A のインスタンス)、instanceT (クラス T のインスタンス) から次のようにします。


instanceT.classADelegate = instanceA;

最後に、クラス T 内で、次の方法でプロット メソッドを呼び出すことができます。


[classADelegate plotXYOnMapFromData:myDataToPlot];

この場合のデリゲート パターンの利点は、クラス T が、プロトコルである ClassA の小さな部分を 1 つだけ認識する必要があるだけであり、プロトコルの実装のおかげで、ClassA が T と通信できることです。

于 2011-02-28T18:15:32.513 に答える
1

がメイン アプリケーション クラスの場合、 を使用してアプリケーション インスタンスにアクセスし、それをクラス タイプにキャストして、呼び出す必要がある API を呼び出すAことができるはずです。[UIApplication sharedApplication]A

于 2011-02-28T18:07:15.520 に答える