我已經使用從Firebase加載的幾行創建了簡單的UITableView。 在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中分配了數據源和委託嗎? –
並分享您的代碼,以便我們可以查看它並更好地瞭解您的情況。 –
感謝提問,我已將其分配給viewDidLoad –