我的应用程序有两种状态:登录和未登录,我有以下架构(大大简化):
- ViewController A包含一个搜索框和一个表视图.
- ViewController B,用于登录应用程序.
流程如下:
- 用户未登录;
- A被推入堆栈.在viewWillAppear我检查,如果用户在如果是,一个异步网络请求正在取得,一旦做到这一点登录,该表加载来自网络的数据.但是,由于此时用户未登录,因此表视图为空;
- 用户点击搜索框; 因为他没有登录,B被推(确认后);
- 他在B中成功登录,然后按下弹出B的按钮并再次显示A;
- 在这个时间点,因为他已登录,从viewWillAppear我做异步请求;
- 完成后,我调用reloadData表格视图.
我注意到的numberOfRowsInSection:是调用它并返回正确的结果,但cellForRowAtIndexPath:之后不会调用它并且表保持为空.
我已经检查并reloadData在主线程上调用了.
知道它能是什么吗?因为它让我疯了!
谢谢,
S.
编辑:这是viewWillAppearA 中代码的异步位.
if ([User isLoggedIn]) {
[self.asyncRequest fetchDataWithCompletionHandler:^(id response, NSError *error) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
if (error) {
[Utils displayError:error];
} else {
self.array = response;
self.isLoaded = YES;
[self.tableView reloadData];
[self.tableView setContentOffset:CGPointMake(0.0f, 0.0f) animated:NO];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
我已经检查过异步请求是否成功完成并且 …