0

概要

名前のリストをテーブルビューに保存するiOSプロジェクトがあります。

データベースを開いたり作成したりした瞬間に、メソッドを実行するための完了ハンドラーがあることを理解しています。

手順:

  1. 私の場合、最初の画面は名前を表示するテーブルビューです
  2. (ナビゲーションバーに)+ボタンがあり、新しい名前を追加して、詳細を入力するための新しい画面に移動します。

懸念

私の心配は、完了ハンドラーでテーブルビューの名前をフェッチし、ユーザーがデータベースが開かれるのを待たずに新しい名前を作成する場合、それを保存している間、データベースが開かれない/作成されない可能性があることです。

質問

  1. そのような状況にどう対処するか?
  2. 私は何かが足りないのですか?
4

2 に答える 2

2

実際、すべてが初期化されるまで、ユーザーが変更を許可することはできません。しばらく時間がかかる場合は、準備ができるまでその機能を無効にしてください。

この場合、それは簡単です。「追加」ボタンを無効にして開始し、完了ハンドラーで有効にします。

documentIsReadyメソッド(編集など、「すべての準備ができました」のときに実行したいことをすべて有効にします)を記述し、ドキュメントを使用する準備ができたら呼び出すことができます。たとえば、以下のコードを参照してください。

    if (![[NSFileManager defaultManager] fileExistsAtPath:[doc.fileURL path]]) {
        [doc saveToURL:doc.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
            [self documentIsReady: success];
        }];
    } else if (doc.documentState == UIDocumentStateClosed) {
        [doc openWithCompletionHandler:^(BOOL success) {
            [self documentIsReady: success];
        }];
    } else {
        BOOL success = doc.documentState == UIDocumentStateNormal;
        [self documentIsReady: success];
    }
于 2012-04-14T04:26:22.657 に答える
1

この状況を処理する1つの(簡単な)方法は、データベースが開かれる/作成されるまで待機するタイマーを追加することです。データベースの準備ができるまで、ボタン(+ボタン)を灰色にすることもできます。

于 2012-04-14T03:52:54.607 に答える