我已经使用从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 –