0

これどうやってするの?

ViewController1ViewController2があります。

ViewController 1はプロトコルを定義し、ViewController2はそれに準拠します。

ViewController 2にデリゲートがあり、 ViewController1のメソッドを呼び出すように設定しました。このメソッドは正常に実行されます。そして、確認をViewController2に送り返します。

それらの間でデータを交換することはできますが、ViewController1の特定のインスタンスからViewController2にデータを取得する方法を見つけようとしています。

デリゲートを使用している場合、ViewController 1でメソッドを実行するために、関心のある特定のインスタンスには対応しないためです。

これを解決する方法はありますか?

特定のインスタンスのデリゲートであるデリゲートを設定して、その状態を取得できますか?これは可能ですか?もしそうなら、どのように?

つまり、デリゲートで特定のインスタンスをターゲットにできますか?

-

ps ViewController 1によってルール化されたプロパティのデータを取得しようとすると、nilになります(これは、特定のインスタンスをターゲットにしていないためだと思います)。私がそれを解決することができる1つの方法は、「すでに保存されたデータ」を読み取るメソッドを持つことです。しかし、私はコードを複製し、以前のViewControllerですでに利用可能なデータを使用して新しいオブジェクトをインスタンス化します。

どんな助けでも大歓迎です。前もって感謝します!

ヌーノ

編集:

SetupTableViewController *delegate = [[SetupTableViewController alloc] init];
[delegate setDelegate:self];

この時点から先に取得しようとするすべてのプロパティは、nilです。これを以前のViewControllerの特定のインスタンスにターゲティングするにはどうすればよいですか?新しいSetupViewControllerをインスタンス化したくありません。本当に必要なのは、SetupViewControllerの既存のインスタンスにアクセスすることです。

4

3 に答える 3

0

質問は本当に曖昧であり、達成しようとしていることをよりよく説明するために、おそらくいくつかのコードを投稿する必要があります。

「それらの間でデータを交換することはできますが、ViewController1の特定のインスタンスからViewController2にデータを取得する方法を見つけようとしています。」

myViewController1Instance.delegate=self;を実行すると 、行うデリゲート呼び出しは、myViewController1InstanceオブジェクトからViewController2にのみ送信され、ViewController1クラスの他のインスタンスからは送信されません。

于 2012-08-08T18:39:39.730 に答える
0

少し厄介な方法で委任を使用する代わりに、代わりに通知を使用してみてください。インスタンスが何かを送信する必要があることを知っている場合、ViewController2によってキャッチされたという通知をスローします。

画面にvc1のインスタンスが複数あるのはなぜですか?あなたが達成しようとしていることについてもっと情報を与えることができますか?

于 2012-08-08T18:41:29.340 に答える
0

プロトコルメッセージに(UIViewController *)senderを追加します。

メッセージを受信したら、送信者を確認します。興味のあるメッセージでない場合は、返信してください。

私はソリンに同意する必要がありますが、おそらく通知を使用する方が良いでしょう。

このような問題は、多くの場合、アーキテクチャを改善することで修正できます。一歩下がって、データが正しい場所にあるかどうかを考えるのは常に良いことです。

于 2012-08-08T19:32:03.220 に答える