Firebaseからロードされているいくつかの行で単純なUITableViewを作成しました。 on viewWillAppear私はオブザーバを接続し、データを配列に移入します。 ビューは既にロードされていますが、非同期Firebaseコールバックはまだ呼び出されていません。 - テーブルは空白として表示されます。 コールバック後にテーブルがリフレッシュされ、期待どおりに見えますが、遅延が目立ちます。 私はオフラインモードを設定しており、オブザーバーのハンドラーは即座に呼び出されるべきであると予想していますが、そうではないと考えています。Firebaseからデータがロードされる前にUITableViewが空白として表示される
これを処理する適切な方法は何ですか? 待機中のバーは、100ms程度で、データはすでにデバイス上にあり、8行しかないので、最適なオプションではないように見えます。 解決策はありますか? ありがとうございました!
コードを守ってください。
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
refHandle = [areasRef observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
[self.arrayOfAreas removeAllObjects];
for (FIRDataSnapshot* areaSnapshot in snapshot.children){
Area *area = [[Area alloc] init];
[area retrieveFromSnapshot:areaSnapshot];
[self.arrayOfAreas addObject:area];
} [self.tableView reloadData];
}]; }
のviewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
self.ref = [[FIRDatabase database] reference];
FIRUser *currentUser = [FIRAuth auth].currentUser;
areasRef = [[[_ref child:@"users"] child:currentUser.uid] child:@"areas"];
self.tableView.dataSource = self;
self.tableView.delegate = self;
self.tableView.tableFooterView = [[UIView alloc]init];
self.arrayOfAreas = [NSMutableArray new];
self.tableView.allowsMultipleSelectionDuringEditing = NO; }
あなたはStoryboardでdataSourceとdelegateを割り当てていますか? –
とあなたのコードを共有するので、私たちはそれを見て、あなたの状況をより良く理解することができます。 –
質問していただきありがとうございます。私はviewDidLoadに割り当てました –