13

iOS プロジェクトで次の警告が表示されます: (iOS7、XCode 5 GM)

警告: 復元中のマーカー ファイルを作成できません

起動時にこの警告が表示されると、すべてが黒くなるビューコントローラーに取り組んでいます。アプリを削除して XCode を再起動すると、解決する場合があります。私は両方でNOを返しています

-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:
-(BOOL)application:(UIApplication *)application shouldSaveApplicationState:

Update1: iPhone4sでテストしました。同じ結果です。View Controller に警告と黒い画面が表示されます。

Update2: 黒い画面に関する自分の質問に回答しました。警告は、最新の iOS 7.0.x バージョンで消えました。

4

3 に答える 3

3

ストーリーボード ファイルでビュー コントローラーを初期ビュー コントローラーとして設定していることを確認してください。この設定は、属性インスペクターにあります。

ストーリーボードのメイン シーンの属性インスペクタ

アップデート

ナビゲーション コントローラー自体に復元 ID を追加していないようですが、代わりに子ビュー コントローラーに復元 ID を設定している可能性があります。この場合は、紛失したコントローラーに復元 ID を追加する必要があります。

国家保存修復ガイド

于 2013-10-02T03:19:10.927 に答える
1

の追加

UIViewController復元

私のためにそれを解決しました。プロトコル参照をクリックすると、次のように表示されます。

// A class must implement this protocol if it is specified as the restoration class of a UIViewController.


@import UIKit;

@interface AppDelegate : UIResponder <UIApplicationDelegate, UIViewControllerRestoration>

@property (strong, nonatomic) UIWindow *window;

@end

ドキュメントには次のように書かれています。

復元クラスは UIViewControllerRestoration プロトコルを実装し、復元時に指定されたオブジェクトを検索または作成します。それぞれをいつ使用するかについてのヒントを次に示します。

1) ビュー コントローラーが起動時にアプリのメイン ストーリーボード ファイルから常に読み込まれる場合は、復元クラスを割り当てないでください。代わりに、アプリのデリゲートにオブジェクトを検索させるか、復元されたオブジェクトを暗黙的に検索するための UIKit のサポートを利用してください。

2) 起動時にメインのストーリーボード ファイルから読み込まれないビュー コントローラーの場合は、復元クラスを割り当てます。最も簡単なオプションは、各ビュー コントローラーを独自の復元クラスにすることです。

ここまでは、このように理解していました。UIViewControllerRestoration プロトコルがなければ、appDelegate は復元クラスではありません (1)。したがって、警告はアプリの起動時 (復元時) に書き込まれます。アプリ デリゲートは、マーカー ファイルに割り当てる必要があるオブジェクトを何らかの形で見つけることができません。問題は appDelegate にあります。アプリ デリゲートが restoreClass になると、ステップ 1) をスキップしてステップ 2) に進みます。appDelegate は、他のすべてのビューのメインの RestorationClass になるようです。次の方法:

+ (UIViewController*) viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents
                                                            coder:(NSCoder *)coder {}

アプリで呼び出されることはなく、復元は警告やエラーなしで機能します。

問題と何が起こっているのかを理解したいと思います。これがお役に立てば幸いです。問題を明確にするためにコメントを歓迎します。:)

于 2014-12-16T09:50:21.513 に答える