ユーザーをアプリからブラウザーに送信し、カスタム URL を介してユーザーをアプリに返します。問題は、インスタンス変数がすべて空になることです! インターフェイスは保持されますが (ストーリーボードを使用したので予想どおり)、値 (テキストフィールド、インスタンス変数など) にはアクセスできません... null を返します。
どうしたの??
ユーザーをアプリからブラウザーに送信し、カスタム URL を介してユーザーをアプリに返します。問題は、インスタンス変数がすべて空になることです! インターフェイスは保持されますが (ストーリーボードを使用したので予想どおり)、値 (テキストフィールド、インスタンス変数など) にはアクセスできません... null を返します。
どうしたの??
(この問題が発生してからしばらく経ちましたが、これが起こったと思います…)
アプリ デリゲートの openURL メソッドでリターン URL の呼び出しを処理しているときに、応答としてビュー コントローラーのメソッドを呼び出そうとしましたが、そのメソッドのビュー コントローラーのインスタンスを作成して実行しました。現在のインスタンスにアクセスしなかったので、基本的にそのビュー コントローラーの空の 2 つ目のインスタンスを作成しました。
この場合、NSNotification
メソッドを直接呼び出す代わりに を使用することになりました。そして、これは間違いなく最もエレガントなソリューションだと思います。
しかし、振り返ってみると、ビュー コントローラーの現在のインスタンスにアクセスすることもできました。これは、たまたまルート ビュー コントローラーでもありました。
UIViewController *controller = self.window.rootViewController;
アプリ デリゲートの呼び出しからの応答は、特定のビュー コントローラーを呼び出さないことが望ましいです。次のいずれかを使用してデータを変更する必要があります。
1.ブロック
2.NSUserDefaults または CoreData データベース
3.お知らせ
4.共有シングルトンインスタンス