2017-10-15 9 views
1

これを最もうまく処理する方法は不明です。 私のxcodeプロジェクトでは、tableviewcontrollerが最初のビューです。また、firebaseのデータが入力されます。 私はモデルとしてシングルトンを使用しています。私のアプリケーションが関数を開始すると、 "readInFirebase"は、tableviewcontrollerのデータソースになる配列を生成します。「初期ビュー」であるtableviewcontrollerにfirebaseのデータを設定します

しかし、明らかに、読み込むデータが多い場合や、インターネット接続が遅い場合は、firebaseがまだ読み込みを完了していないため、読み込み時にtableviewcontrollerが空に見えます。

私は人々がこれをどのように扱っているのだろうと思っていました。データが入力されるまで、tableviewcontrollerの上にUIActivityIndi​​catorを重ねるだけですか?

ありがとうございました。

答えて

1

これにはcompletion handlerがあり、データの取得を開始するときにUIActivityIndicatorを開始する必要があります。完了ハンドラからコールバックを受け取ったら、UIActivityIndicatorを停止します。

これをさらに進めたい場合は、データの一部をフェッチするだけで、ユーザーがスクロールしたときにさらにデータをフェッチすることができます。このようにして、ユーザーの待ち時間と読み込み時間はほとんどありません。

+0

こんにちはRashwan。ありがとう。モデルには、実際にはViewControllerではなく、readInFirebase関数があります。私のアプリが最初に読み込まれると、readInFirebase関数が呼び出されています - ReadInFirebaseはTableViewControlerから実行されません。したがって、モデルからのreadInFirebaseが終了したときにTableViewControllerに伝える必要があります。 TableViewControllerにreadInFirebase関数を追加するほうが簡単ですか? – Mike

+0

私は 'readInFirebase'を使っていませんでしたが、私はあなたと同じ構造を持っていましたが、以前はそれを使用していなかったし、それがどのように動作するのか分かりません。 –

+0

こんにちは@Rashwan。私はそれがすべて働いている。私は補完ハンドラを持っていて、firebaseの読み込みが終了したら私のTableViewControllerに通知されます。しかし、今私が抱えている問題は、テーブルデータをリロードする方法です。 // activityIndi​​catorView.stopAnimating() データリスト= model.dataArray self.tableView.reloadData() } ...のtableView { ( "完了") で(成功)} model.readInFirebaseData .reloadData()は何もしていません。しかし、私は別の画面にsegueし、戻ってくるTableViewが設定されています。 – Mike

関連する問題