20

ユーザーをアプリからブラウザーに送信し、カスタム URL を介してユーザーをアプリに返します。問題は、インスタンス変数がすべて空になることです! インターフェイスは保持されますが (ストーリーボードを使用したので予想どおり)、値 (テキストフィールド、インスタンス変数など) にはアクセスできません... null を返します。

どうしたの??

4

2 に答える 2

10

(この問題が発生してからしばらく経ちましたが、これが起こったと思います…)

アプリ デリゲートの openURL メソッドでリターン URL の呼び出しを処理しているときに、応答としてビュー コントローラーのメソッドを呼び出そうとしましたが、そのメソッドのビュー コントローラーのインスタンスを作成して実行しました。現在のインスタンスにアクセスしなかったので、基本的にそのビュー コントローラーの空の 2 つ目のインスタンスを作成しました。

この場合、NSNotificationメソッドを直接呼び出す代わりに を使用することになりました。そして、これは間違いなく最もエレガントなソリューションだと思います。

しかし、振り返ってみると、ビュー コントローラーの現在のインスタンスにアクセスすることもできました。これは、たまたまルート ビュー コントローラーでもありました。

UIViewController *controller = self.window.rootViewController;
于 2014-01-09T14:52:11.433 に答える
2

アプリ デリゲートの呼び出しからの応答は、特定のビュー コントローラーを呼び出さないことが望ましいです。次のいずれかを使用してデータを変更する必要があります。

1.ブロック

2.NSUserDefaults または CoreData データベース

3.お知らせ

4.共有シングルトンインスタンス

于 2014-01-09T11:30:48.157 に答える