問題タブ [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.
ios - アプリケーションの状態の保存中に、encodeWithCoder が SKNode のサブクラスで呼び出されないのはなぜですか?
<NSCoding>
概要:親クラスからカスタム クラスを派生させるencodeWithCoder
と、アプリケーションの状態の保存中にメソッドが呼び出されます。親を に変更するSKNode
と、encodeWithCoder
メソッドは呼び出されなくなります。
詳細:
UIKit
ビュー コントローラーは、アプリケーションの状態の保存中にエンコードされます。タイプ の単一のオブジェクトをエンコードしますMyNode
。
MyNode
この質問のために構築された簡素化されたクラスです。完全を期すためにコードを含めますが、encode メソッドと decode メソッドは単にNSLog
andを呼び出しますsuper
。
上記のようにの親が の場合、MyNode
アプリケーションMyParent
の保存中にログに記録された出力が表示されます。
しかし、の親を に変更するとMyNode
、SKNode
実装encodeWithCoder
は呼び出されません。
なぜだめですか?
私が試したこと:
- 独自の を使用してカスタム クラスをアーカイブし
NSKeyedArchiver
ます。これは期待どおりに機能します。 - カスタム クラスにプロトコルを実装
UIStateRestoring
し、復元識別子を使用してアプリケーションに登録します。これは私にはあまり意味がありませんでした。 - この質問
classForCoder
のように、いじります。しかし、それが当てはまるようには聞こえず、とにかくカスタムクラスで呼び出されていません。classForCoder
(このテスト ケースに影響を与えた現実世界の問題の詳細は関係ないようです。)
ios - 状態の復元が警告を発する - 不可解な視覚異常を引き起こす
これまでのところ、インターネットには、私に起こっているこの状態復元の警告に対するヒットはありません。
TabBarController には、ViewController (vc1) をナビゲーション コントローラーにプッシュするビューがあります。次に、VC1 は NavigationController をそれ自体にモーダルにプッシュします。これには、vc2 で始まる独自の一連のビュー コントローラーがあります。
状態が復元されると、(vc2 のスナップショットから) vc1 にフラッシュバックしてから、最終的に vc2 が再びライブで表示されます。
どこから調査を開始できるかについて誰かがアイデアを持っていれば、それは大きな助けになるでしょう.
ios - 状態復元を使用してView Controllerのサブビューを復元する方法
状態の復元を使用して、アプリの以前のビューとデータを復元しています。最初のビュー コントローラーでボタンをクリックすると、2 番目のビュー コントロールをプッシュします。この場合、2 番目のビュー コントローラー データを復元できます。最初のView Controllerでボタンがクリックされたときに、最初のView ControllerのサブビューとしてのView Controllerビュー、encodeRestorableStateWithCoder:およびdecodeRestorableStateWithCoder:が2番目のView Controllerで呼び出されませんでした。2番目のView Controllerデータを復元できません。サブビューを復元するために他の構成を行う必要がありますかデータ ?
objective-c - 状態復元時のステータスバー スタイル
アプリの起動中にステータスバーのスタイルを、アプリの状態が保持 (保存) されたときに使用されたものにリセットする方法はありますか?
ios - 状態の復元と保存、UILabel のエンコード
上記のコードは、サブビューとして画面に追加したすべての UILabel を for ループを介してエンコードするために使用されます。ただし、デコードするときに得られるのはコンソールからの (null) だけです。助けてください。
cocoa - Swift で NSWindowRestoration を実装するには?
非ドキュメントベースのアプリケーションで、Swift に NSWindowRestoration プロトコルを実装してみました。ただし、restoreWindowWithIdentifier
アプリケーションの起動時にメソッドが呼び出されることはありません。誰かが私の間違いを指摘できますか?
コードのサブセットを次に示します (正常にコンパイルおよび実行されます)。
前もって感謝します!
ios - Core Bluetooth 状態の復元をオプトアウトする方法はありますか?
CBCentralManager が復元識別子で既にインスタンス化されている場合、CB 状態の復元をオプトアウトする方法を知っている人はいますか?
基本的には条件によっては再度CBの状態回復をオフにしたい(=状態回復をずっと使いたくない)。
centralManager の割り当てを解除し、復元識別子なしで新しいインスタンスを作成する必要がありますか?
ios - UINavigationController からプッシュされた UIViewController を復元して保存します。ストーリーボードはありません
最初のView Controllerからプッシュした単純なUIViewControllerを復元しようとしています。最初のものは保持されますが、2 番目のものは再起動すると消えます。ストーリーボードは使いません。すべてのView Controllerにプロトコルを実装し、それぞれにrestoreIdentifierとrestoreClassを追加します。
2 番目の viewController は 3 番目の viewController から継承し、xib ファイルから初期化されます。UIViewControllerRestoration を直接使用しないため、この 3 番目に実装する必要があるかどうかはわかりません。
私のコードは通常次のようになります。
おそらく、navigationController もサブクラス化して、UIViewControllerRestoration から継承できるようにする必要がありますか?
更新: OK、UIViewController から UIViewController へのプッシュが機能するようです。しかし、UIViewController から UITableViewController へのプッシュ、およびその逆のプッシュは機能しません。テーブルビューが UIViewControllerRestoration プロトコルを実装している場合、アプリがクラッシュします。プロトコルを実装しないと、tableView からプッシュされた UIViewControllers は保持されません。
UITableViewControllers をクラッシュさせずに保持するには、どのように扱うべきですか?
更新: もうクラッシュしません..これは、アプリ固有のメモリ バグが原因でした。しかし、tableView はまだ保持されておらず、プッシュされた viewController も保持されていません。
更新:テーブルビューが正しく復元されなかった理由は、バックグラウンドでデータソースを削除したためです..しかし、モーダルviewControllerをself.navigationController以外の別のnavigationControllerにプッシュしようとすると、モーダルviewControllerが表示されないという問題がまだあります。このモーダル ナビゲーション コントローラーに復元識別子を設定しましたが、ビューが表示されません。