問題タブ [state-restoration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
69 参照

segue - Segueed iOS UIViewControllers を復元するためのより良い方法

オプションのリストを表示する UITableViewController があります。各オプションをタップすると、セグエを使用して別のView Controllerに移動します

アプリの状態を復元するには、次のコードが必要です。しかし、よりクリーンな方法はありますか?リストに 2 つのオプションを処理するコードを含めましたが、画像は 10 個のオプションです!

子 VC は埋め込まれていないため、encodeObject() する必要があることに驚いています (UITabbarController に埋め込まれている場合は、encodeObject() 子が必要です)。

私の主な「嫌いな点」はrestoreChildIfPresent()、ViewControllers の追加と醜い必要性によって成長するものです。forgetChildren()

0 投票する
2 に答える
383 参照

ios - iOS Bluetooth State Preservation and Restoration の DUPLICATE ISSUE -25299

CBCentralManager をインスタンス化するときに問題が発生しています。iOS コンソールから監視すると、「問題が重複しています」というメッセージが表示されます (XCode コンソールには表示されません)。

キュー名復元キー IDを更新しようとしましたが、成功しませんでした。これは、Central Manager をインスタンス化する方法です。

そして、それらは私が得ているエラーです:

CKLs-iPhone-5S securityd [78] : securityd_xpc_dictionary_handler MyApp[2571] add 操作を完了できませんでした。(OSStatus エラー -25299 - 重複アイテム O,genp,E99372E2,L,ck,X2W6M5UYJ9.com.mydomain.myapp,0,acct,svce,v_Data,20151218165347.298588Z,2CAE5650)

CKLs-iPhone-5S MyApp [2571] : SecOSStatusWith エラー:[-25299] 操作を完了できませんでした。(OSStatus エラー -25299 - リモート エラー: 操作を完了できませんでした。(OSStatus エラー -25299 - アイテムが重複しています O,genp,E99372E2,L,ck,X2W6M5UYJ9.com.mydomain.myapp,0,acct,svce,v_Data ,20151218165347.298588Z,2CAE5650))

何か案は?

0 投票する
2 に答える
570 参照

ios - 毎回状態を復元しますか?

私のアプリには、ユーザーが自分でアプリを強制終了した場合でも復元する必要があるView Controllerがあり、それを行いshouldRestoreApplicationStateません。ユーザーがアプリを強制終了した場合、最初のコントローラーに戻ります。

それで、私がやりたいことをする方法はありますか、毎回状態を復元できますか?

状態の復元でそれが不可能な場合は、View Controller を永続ストアに保存して appDelegate から提示できるのではないかと考えましたが、まだわかりませんでした。appDelegate から、タブ バー コントローラーとそのビューまでの複数のナビゲーション コントローラーを含む、ナビゲーション スタック全体を再構築する必要があります。それは良い考えですか?どうすればいいですか?

私はこれのバリエーションを試しました:

しかし、さまざまなエラーが発生し続けます。

理想的には、すべてのビュー コントローラーの状態を復元したかったのですが、それは毎回行わなければなりません。それを行うより良い方法はありますか?

ありがとう、

ダニエル

0 投票する
1 に答える
128 参照

ios - 弱参照デリゲートが復元されない

AddCityViewController、対応するテキスト フィールドとともに復元されます。「キャンセル」および「保存」ボタンには、デリゲートへの呼び出しが含まれています。モーダル ビュー コントローラーは復元されていますが、[保存] ボタンと [キャンセル] ボタンでデリゲート メソッドがアクティブ化されていません。すべてのビュー コントローラーは、ストーリーボード内に作成されています。

[キャンセル] ボタンは、状態の復元が実装されていない場合にのみデリゲート メソッドを呼び出します。

状態の復元に必要なときにデリゲートも呼び出されるようにしたい

はのCityTableViewControllerデリゲートですAddCityTableView

...

以下のデリゲート メソッドは、STATE RESTORATION を除いて完全に機能します。状態の復元中に、このメソッドが呼び出されることはありません。

0 投票する
1 に答える
311 参照

ios - WatchOS WCSession sendMessage のデバッグと状態復元に関する問題で、iPhone アプリが強制終了されました

シンプルな WatchOS 2.0 機能をアプリに追加して、時計で簡単なアクションをトリガーし、iPhone のメイン アプリで効果を発揮できるようにしようとしています。このすべては、WCSession の sendMessage メソッドを使用して時計からメッセージを送信することによって決まります。

これまでのところ、すべて正常に機能しています。メッセージが送信され、メッセージが受信され、アプリが正しく反応します。アプリをバックグラウンドにすることもでき、すべてが正常に動作しているようです (iPhone がウォッチの接続コンテキストを更新し、ウォッチに反映されるため、iPhone がメッセージに反応したかどうかをウォッチで確認できます)。今すぐエッジケースのデバッグを開始したいだけです。

私の主な2つの心配は...

アプリが強制終了された場合、アプリを起動するシステムをどのように正確にデバッグできますか。Xcode からプロセスを生成することは明らかにできません。プロセスにアタッチしようとすると、明らかに遅すぎます。理想的には、ブレークポイントを非常に早く設定して、動作を確認できるようにしたいと考えています。最悪の場合、私が推測する多くのログに依存して、それらを調べることができます。このシナリオをデバッグする良い方法があるかどうか疑問に思っていますか?

最後に、状態の復元に関して、sendMessage が送信されるシナリオによって実行される、この強制終了されたアプリで何が起こるか。すなわち。

  • アプリが特定の状態で実行されていた (A)
  • ホームボタンを押してアプリをバックグラウンドにすると、そのときのアプリの状態 (A) に対して状態エンコードが実行されます。
  • その後、アプリはバックグラウンドで待機します。
  • 次に、Xcode での実行を停止して、アプリを強制終了します。
  • 最後に、時計から sendMessage を送信して、システムが強制終了されたアプリを再実行するようにします。
  • この段階で、状態の復元の読み込みが発生し、メッセージが届き、アプリの状態を状態 B に変更して処理され、アプリはバックグラウンドに戻ります。

私の問題は、アプリが最初にバックグラウンド化されたときに、状態エンコーディングが状態 A に保存されていることです。

ウォッチ接続 sendMessage の処理が完了した後、バックグラウンドで新しい状態エンコードを強制的に発生させる方法はありますか?

次にアプリを適切に開いたときに何が起こるか、時計の sendMessage を処理したときに状態 A に戻る状態の復元が発生し、状態 B にあるはずです。まだバックグラウンドで実行されていると推測しているので、アプリがバックグラウンドで生成されたアプリは持続し、新しい状態の復元は発生しません。ただし、システムが状態 B でバックグラウンドになっているときにアプリを再度強制終了した場合はどうなるでしょうか。このシナリオでは、新しい状態 B を保存するために新しい状態エンコードが必要なのか、それともアプリを強制終了して何もしないことを理解していますか。もしそうなら、最終的にそれを新たに起動したときに、アプリの状態 B ではなく、再びアプリの状態 A に戻る可能性があります。

余談ですが、この種のことを試してデバッグし始めたばかりですが、このシステムにデバッガーを接続する機能がないように見えますが、iPhone アプリのインスタンスを再実行しました。強制終了された iPhone アプリを起動する sendMessage を実行すると、時計アプリが適切に更新されないことに気付きました。電話アプリは、要求されたアクションを完全には実行しません。この状態で何が起こったのかは今のところわかりませんが、状態の回復が邪魔になるのではないかと思います. メッセージを受信し、アプリを起動し、状態の復元がまだ行われていないため、存在しないデータに対処しようとすると、状態の復元が行われます..時計から 2 回目にメッセージを送信すると、アプリは正しく動作するので、その最初のメッセージでアプリが起動するが、何らかの理由で起動しないかのように' メッセージを正しく処理しない。正常に起動すると、次の sendMessage は通常どおり処理されます。

申し訳ありませんが、iPhone アプリが sendMessage 呼び出しからバックグラウンドで再実行されたときに何が起こるかについて、ドキュメントがかなり曖昧です。誰でもアイデアはありますか?いつものようにあなたの時間は本当に感謝しています! 乾杯!

0 投票する
1 に答える
72 参照

state-restoration - モーダル ビュー コントローラの復元

メソッドが呼び出されていません...

AppDelegate.m は使用していません

0 投票する
0 に答える
96 参照

ios - NSCoding 状態の復元中に既存のオブジェクトを参照する方法

NSCoding を実装し、UIView オブジェクトへの参照を保持するクラスがあります...

渡されたのviewは、シリアル化する必要のない特定の重量のカスタム ビュー クラスです。多くのAオブジェクトがあり、それらはすべてこの同じ custom を参照していますUIView。しかし、状態の復元中に、のインスタンスを復元するために、それへの参照が必要ですA。インスタンスはview必要な時点で既に存在し、カスタム UIViewController は実際にデコード シーケンスを開始します。

しかし、既存のビューを で利用できるようにするにはどうすればよいA.init?(coder aDecoder: NSCoder)でしょうか?

0 投票する
1 に答える
398 参照

macos - ウィンドウの状態をエンコードせずに NSApp をプログラムで終了する方法は?

サポートしているすべての OS X アプリケーションはNSWindowRestoration、メニュー エントリ [Quit and Close All Windows] (Option-Command Q) を選択することで閉じることができます。これにより、状態の復元が無効になり、次にアプリを開いたときに、すべてのウィンドウがデフォルトの位置になります。

メニュー エントリは、terminate:メソッド on をトリガーしますNSApplication。ただし、通常の「アプリを閉じる」メニューも同様です (コマンド Q)。

「すべてのウィンドウを終了して閉じる」をプログラムで実行するにはどうすればよいですか? 自分ですべてのウィンドウを閉じてから呼び出す必要がありterminate:ますか?

terminate:両方のアクションが同じメソッドに接続されている場合、Apple は魔法のように何をすべきかをどのように決定するのでしょうか?